首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新元组的元组

更新元组的元组
EN

Stack Overflow用户
提问于 2015-12-21 06:41:46
回答 3查看 130关注 0票数 0

我有过

tuples = (('a',), ('b',), ('c',), ('d',))

我尝试用以下代码更新它。

代码语言:javascript
复制
for tup in tuples:
    tup += (1,)
print tuples

我预计结果将是(('a',1), ('b',1), ('c',1), ('d',1))。但它印的是原值。为什么?当我在循环中插入print tup时,我看到tup被更新了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-21 06:44:06

因为元组是不可变的。tup += (1,)将返回一个新的元组,您在循环中什么都不做。

话虽如此,给你的是:

代码语言:javascript
复制
>>> tuples = (('a',), ('b',))
>>> tuple(tup + (1,) for tup in tuples)
(('a', 1), ('b', 1))
票数 3
EN

Stack Overflow用户

发布于 2015-12-21 06:44:24

元组是不可变的,您不能更新它,但是可以构建一个新的元组。

代码语言:javascript
复制
>>> l = (('a',), ('b',), ('c',), ('d',))
>>> tuple((i[0],1) for i in l)
(('a', 1), ('b', 1), ('c', 1), ('d', 1))
票数 2
EN

Stack Overflow用户

发布于 2015-12-21 06:56:50

正如其他人已经指出的,元组是不可变的。因此,它们不能修改。如果您需要允许修改的可更改性,则应该使用list

代码语言:javascript
复制
>>> # 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,您应该能够得到所需的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34390164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档