我有过
tuples = (('a',), ('b',), ('c',), ('d',))
我尝试用以下代码更新它。
for tup in tuples:
tup += (1,)
print tuples我预计结果将是(('a',1), ('b',1), ('c',1), ('d',1))。但它印的是原值。为什么?当我在循环中插入print tup时,我看到tup被更新了。
发布于 2015-12-21 06:44:06
因为元组是不可变的。tup += (1,)将返回一个新的元组,您在循环中什么都不做。
话虽如此,给你的是:
>>> tuples = (('a',), ('b',))
>>> tuple(tup + (1,) for tup in tuples)
(('a', 1), ('b', 1))发布于 2015-12-21 06:44:24
元组是不可变的,您不能更新它,但是可以构建一个新的元组。
>>> l = (('a',), ('b',), ('c',), ('d',))
>>> tuple((i[0],1) for i in l)
(('a', 1), ('b', 1), ('c', 1), ('d', 1))发布于 2015-12-21 06:56:50
正如其他人已经指出的,元组是不可变的。因此,它们不能修改。如果您需要允许修改的可更改性,则应该使用list。
>>> # tuples; immutable
>>> tt = ((1, 2, 3), (1, 2, 3), (1, 2, 3))
>>> tt
((1, 2, 3), (1, 2, 3), (1, 2, 3))
>>> for e in tt: e += (4, )
...
>>> tt
((1, 2, 3), (1, 2, 3), (1, 2, 3))
>>> # lists; mutable
>>> ll = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> ll
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> for e in ll: e += [4]
...
>>> ll
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]如上面所示,如果您使用lists,您应该能够得到所需的东西。
https://stackoverflow.com/questions/34390164
复制相似问题