这段 Python 代码是什么结果?

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 都不是


这段 Python 代码是什么结果?
25 回复

我无法理解你的问题。

我试了, AB 都是。

b = l[2]
b += [7,8]

AB

>>> 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])

A, B 都是
l[2].append(‘MeiTiaoZhan’)

的确,这样就不报错了
b = l[2]
b += [5, 6]

l = (1, 2, [3, 4])
try:
l[2] += [5, 6]
except:
print(l)
有点神奇

《 Fluent Python 》有详细解释这个问题

元组不可变,哪怕这种赋值都不行 l[2] = l[2]。

嘿嘿 就是在看这本书 为了它还买了 Safari Books Online 的订阅 钱包好疼 T_T

你可以 L[2].extend([5,6])

C 结果[5,6]也被赋值进去了???

我订阅了 leetcode,买了 pycharm, 很想订阅 safari,但是的确贵

我觉得出现这种问题明显是 python 设计的不合理,l[2] += [5, 6];
这个表达式我个人认为应该为保证“事务的原子性”,而不应该出现上面这种报错了值又被改变了。

订阅 Pycharm 的?还是之前买的一个固定版本?

订阅的

回到顶部