2014-02-13 82 views
-1

我有最奇怪的问题,也许有人可以向我解释这一点。我试图做一些操纵元组:追加到元组

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:

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

元组串联似乎并没有正常工作。但是,当我做的:

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') 

它与文档一致。那么为什么我不能传入变量来创建我的元组呢?还有另外一种方法,我应该这样做?

+0

请勿重写您的变量 – Trent

+0

术语警告:您不会追加到元组,因为它们是不可变的。你连接它们。 –

回答

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

在这种情况下,你是在用messagesubjectsender值每次迭代更换message。所以,你在嵌套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

为了两个不同的目的,您正在使用变量“消息”。解决这个问题,你的问题就会消失。