请教一个python赋值语句的问题

2013-10-08 22:55:40 +08:00
 lts9165
l = [1, 2, 3]
a = [4]
l[:] = a
print l

如上语句中, l[:] = a这句,算是什么类型的赋值呢?
l[:]是个列表,如果这算是列表解包赋值,那右边的a又和l[:]的长度不一致
求好心人指点迷津~~
3176 次点击
所在节点    Python
8 条回复
hanai
2013-10-08 23:03:13 +08:00
hanai
2013-10-08 23:12:55 +08:00
呃,错了。
lts9165
2013-10-08 23:20:22 +08:00
@hanai 恩,好像确实有问题,l[:]和l确实是不同的对象,可是为什么能够直接给l[:]赋值呢
lts9165
2013-10-08 23:22:30 +08:00
@hanai 我还试了[l[0],l[1],l[2]]=a 这样的赋值,就说a只有一个值,解不了
vmebeh
2013-10-08 23:29:59 +08:00
>>> i[:]==i
True
farseerfc
2013-10-08 23:31:15 +08:00
區別用以下例子可以說清楚:
>>> l = [1,2,3]
>>> r = l
>>> a = [4]
>>> l
[1, 2, 3]
>>> r
[1, 2, 3]
>>> a
[4]
>>> l[:]=a
>>> l
[4]
>>> r
[4]
>>> l = [1,2,3]
>>> r = l
>>> a = [4]
>>> l = a
>>> l
[4]
>>> r
[1, 2, 3]
>>> l = [1,2,3]
>>> l[1:3] = a
>>> l
[1, 4]

針對區段的賦值是可以替換整個區段的。
lts9165
2013-10-08 23:49:19 +08:00
@farseerfc 哦!明白了!多谢~
roricon
2013-10-09 10:51:50 +08:00
我擦还能这么写,又学到了

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

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

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

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

© 2021 V2EX