2014-02-13 4 views
-1

У меня самая странная проблема, возможно, кто-то может объяснить это мне. кажется, не работает должным образомДобавление к кортежу

('c', 'b', 'a', 'c', ('c', 'b', 'a'), 'a', 'c', ('c', ('c', 'b', 'a'), 'a'), 'a') 

Кортеж конкатенации: Я пытаюсь сделать некоторые манипуляции кортежа:

rec_tuple =() 
sender = 'a' 
message = 'b' 
subject = 'c' 
for i in range(1,4): 
    message = (subject, message, sender) 
    rec_tuple = rec_tuple+message 

выход для rec_tuple. Но когда я делаю:

for i in range(1,4): 
    message = ('a', 'b', 'c') 
    rec_tuple = rec_tuple+message 

выход для rec_tuple:

('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c') 

что согласуется с Docs. Так почему я не могу передать переменные, чтобы создать свой кортеж? Есть ли другой способ, которым я должен это делать?

+0

Не переопределяйте переменные – Trent

+0

Предупреждение о терминологии: вы не добавляете кортежи, поскольку они неизменяемы. Вы объединяете их. –

ответ

3
message = (subject, message, sender) 
rec_tuple = rec_tuple+message 

В этом случае, вы заменяете message на каждой итерации со значением message и subject и sender. Итак, вы вставляете кортеж message.

Чтобы исправить это, попробуйте использовать какое-либо другое переменного имя

message1 = (subject, message, sender) 
rec_tuple = rec_tuple + message1 

Лучше использовать кортеж, как это

rec_tuple = rec_tuple + (subject, message, sender) 

Даже лучше, используйте короткие руки нотации

rec_tuple += (subject, message, sender) 

Это позволяет пользователю понять, что вы объединяете кортежи и уменьшаете количество строк.

Выход

('c', 'b', 'a', 'c', 'b', 'a', 'c', 'b', 'a') 
0

Вы топать на message в петле. Используйте другое имя.

+0

Я чувствую себя таким глупым. Я смотрел на эту вещь как на 2 часа. –

+0

Я отвечу за ответ через 11 минут. –

0

Вы используете переменное «сообщение» для двух разных целей. Исправьте это, и ваша проблема исчезнет.

Смежные вопросы