Python中list和list[:]有什么区别?
在Python中,list
和list[:]
有什么区别呢?
简单来说,list
就是你原来的列表,而list[:]
是这个列表的一个“副本”。
想象一下,你有一个装满水果的篮子,这个篮子就是list
。如果你直接说“给我这个篮子”,那你得到的就是原来的篮子,里面的水果可以随意拿走、吃掉。
但是如果你说“给我这个篮子的副本”,也就是list[:]
,那么你得到的是一个新篮子,里面有和原来一模一样的水果。你可以在这个新篮子里做任何事情,比如拿走水果,但原来的篮子里的水果不会受到影响。
所以,list
和list[:]
的主要区别在于:前者是原来的列表,后者是原列表的一个拷贝,修改一个不会影响另一个。
7 个回答
6
li[:] 这个写法会创建一个原始列表的副本。也就是说,它不会指向同一个列表对象。因此,当你修改这个通过 li[:] 创建的副本时,不会影响到原来的列表。
举个例子:
>>> list1 = [1,2,3]
>>> list2 = list1
>>> list3 = list1[:]
>>> list1[0] = 4
>>> list2
[4, 2, 3]
>>> list3
[1, 2, 3]
在这里,list2
是通过修改 list1
而改变的,但 list3
并没有变化。
32
后者是对列表的一个副本的引用,而不是对原列表的引用。所以这非常有用。
>>> li = [1,2,3]
>>> li2 = li
>>> li3 = li[:]
>>> li2[0] = 0
>>> li
[0, 2, 3]
>>> li3
[1, 2, 3]
101
在读取的时候,list
是指向原始列表的引用,而 list[:]
是对列表的浅拷贝。
在赋值的时候,list
是重新绑定这个名字,而 list[:]
是切片赋值,会替换掉列表中之前的内容。
另外,不要把 list
用作变量名,因为这样会遮蔽掉内置的功能。