我遇到了最棘手的问题,或许有人可以向我解释这个问题。我正在尝试做一些元组操作:
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 :(得分: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')
答案 1 :(得分:0)
你在循环中踩着message
。使用其他名称。
答案 2 :(得分:0)
您将变量“message”用于两个不同的目的。解决这个问题,你的问题就会消失。