2024-04-25 09:33:36 发布
网友
我有
tuples = (('a',), ('b',), ('c',), ('d',))
我试着用下面的代码来更新它。你知道吗
for tup in tuples: tup += (1,) print tuples
我希望结果是(('a',1), ('b',1), ('c',1), ('d',1))。但印出来的和原值一样。为什么? 当我在循环中插入print tup时,我看到tup被更新了。你知道吗
(('a',1), ('b',1), ('c',1), ('d',1))
print tup
tup
正如其他人已经指出的,元组是不可变的。因此,它们不能被修改。如果需要可变性来允许修改,那么应该改用list。你知道吗
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]]
如上所示,如果您使用list,您应该能够得到您想要的。你知道吗
元组是不可变的,您不能更新它,但可以构建一个新元组。你知道吗
>>> l = (('a',), ('b',), ('c',), ('d',)) >>> tuple((i[0],1) for i in l) (('a', 1), ('b', 1), ('c', 1), ('d', 1))
因为元组是不可变的。tup += (1,)将返回一个新的元组,您在循环中不使用它。你知道吗
tup += (1,)
话说回来,给你:
>>> tuples = (('a',), ('b',)) >>> tuple(tup + (1,) for tup in tuples) (('a', 1), ('b', 1))
正如其他人已经指出的,元组是不可变的。因此,它们不能被修改。如果需要可变性来允许修改,那么应该改用
list
。你知道吗如上所示,如果您使用
list
,您应该能够得到您想要的。你知道吗元组是不可变的,您不能更新它,但可以构建一个新元组。你知道吗
因为元组是不可变的。
tup += (1,)
将返回一个新的元组,您在循环中不使用它。你知道吗话说回来,给你:
相关问题 更多 >
编程相关推荐