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 都不是
1
dacapoday 2017-04-26 21:31:48 +08:00
B
|
2
kindjeff 2017-04-26 21:40:26 +08:00
我试了, AB 都是。
|
3
weyou 2017-04-26 21:42:50 +08:00 via Android
C
|
4
beimingyouyu 2017-04-26 21:44:38 +08:00
C
|
5
HFcbyqP0iVO5KM05 2017-04-26 21:46:46 +08:00 via Android
b = l[2]
b += [7,8] |
6
bukip 2017-04-26 21:51:08 +08:00
AB
|
7
LokiSharp 2017-04-26 21:54:22 +08:00 via iPhone
>>> 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]) |
8
Yvette 2017-04-26 21:58:52 +08:00 1
|
9
cxyfreedom 2017-04-26 22:00:21 +08:00 via iPhone
C
|
10
director 2017-04-26 22:05:46 +08:00 1
|
11
WangYanjie 2017-04-26 22:14:34 +08:00
A, B 都是
l[2].append('MeiTiaoZhan') |
13
sunbeams001 2017-04-27 00:00:51 +08:00
的确,这样就不报错了
b = l[2] b += [5, 6] |
14
soratadori 2017-04-27 02:23:38 +08:00
l = (1, 2, [3, 4])
try: l[2] += [5, 6] except: print(l) 有点神奇 |
15
NoAnyLove 2017-04-27 03:34:10 +08:00
《 Fluent Python 》有详细解释这个问题
|
16
mapleray 2017-04-27 09:35:31 +08:00
|
17
mec 2017-04-27 10:08:29 +08:00
元组不可变,哪怕这种赋值都不行 l[2] = l[2]。
|
18
jmc891205 OP @NoAnyLove 嘿嘿 就是在看这本书 为了它还买了 Safari Books Online 的订阅 钱包好疼 T_T
|
19
yanzixuan 2017-04-27 11:49:24 +08:00
@sunbeams001 你可以 L[2].extend([5,6])
|
20
AkiseAru 2017-04-27 16:18:13 +08:00
C 结果[5,6]也被赋值进去了???
|
21
billgreen1 2017-04-28 11:33:18 +08:00
@jmc891205 我订阅了 leetcode,买了 pycharm, 很想订阅 safari,但是的确贵
|
22
seancheer 2017-05-02 17:36:33 +08:00
我觉得出现这种问题明显是 python 设计的不合理,l[2] += [5, 6];
这个表达式我个人认为应该为保证“事务的原子性”,而不应该出现上面这种报错了值又被改变了。 |
23
lln133208 2017-07-10 10:42:32 +08:00
@billgreen1 订阅 Pycharm 的?还是之前买的一个固定版本?
|
24
billgreen1 2017-07-10 16:42:41 +08:00
@lln133208 订阅的
|