这段 Python 代码是什么结果?

2017 年 4 月 26 日
 jmc891205
l = (1, 2, [3, 4])
l[2] += [5, 6]

A. l 变为(1, 2, [3, 4, 5, 6])
B. 抛出 TypeError 异常: "'tuple' object does not support item assignment."
C. A 和 B 都是
D. A 和 B 都不是

5188 次点击
所在节点    Python
24 条回复
dacapoday
2017 年 4 月 26 日
B
kindjeff
2017 年 4 月 26 日
我试了, AB 都是。
weyou
2017 年 4 月 26 日
C
beimingyouyu
2017 年 4 月 26 日
C
HFcbyqP0iVO5KM05
2017 年 4 月 26 日
b = l[2]
b += [7,8]
bukip
2017 年 4 月 26 日
AB
LokiSharp
2017 年 4 月 26 日
>>> l = (1, 2, [3, 4])
>>> l[2] += [5, 6]
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> l
(1, 2, [3, 4, 5, 6])
Yvette
2017 年 4 月 26 日
cxyfreedom
2017 年 4 月 26 日
C
director
2017 年 4 月 26 日
WangYanjie
2017 年 4 月 26 日
A, B 都是
l[2].append('MeiTiaoZhan')
mingyun
2017 年 4 月 26 日
@director nice
sunbeams001
2017 年 4 月 27 日
的确,这样就不报错了
b = l[2]
b += [5, 6]
soratadori
2017 年 4 月 27 日
l = (1, 2, [3, 4])
try:
l[2] += [5, 6]
except:
print(l)
有点神奇
NoAnyLove
2017 年 4 月 27 日
《 Fluent Python 》有详细解释这个问题
mapleray
2017 年 4 月 27 日
mec
2017 年 4 月 27 日
元组不可变,哪怕这种赋值都不行 l[2] = l[2]。
jmc891205
2017 年 4 月 27 日
@NoAnyLove 嘿嘿 就是在看这本书 为了它还买了 Safari Books Online 的订阅 钱包好疼 T_T
yanzixuan
2017 年 4 月 27 日
@sunbeams001 你可以 L[2].extend([5,6])
AkiseAru
2017 年 4 月 27 日
C 结果[5,6]也被赋值进去了???

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX