附加到元组

时间:2014-02-13 02:30:40

标签: python tuples

我遇到了最棘手的问题,或许有人可以向我解释这个问题。我正在尝试做一些元组操作:

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

哪个与文档一致。那么为什么我不能传入变量来创建我的元组呢?还有其他方法我应该这样做吗?

3 个答案:

答案 0 :(得分:3)

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

在这种情况下,您要在每次迭代时使用messagemessage以及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')

答案 1 :(得分:0)

你在循环中踩着message。使用其他名称。

答案 2 :(得分:0)

您将变量“message”用于两个不同的目的。解决这个问题,你的问题就会消失。