Python中list和list[:]有什么区别?

75 投票
7 回答
38349 浏览
提问于 2025-04-16 06:27

在Python中,listlist[:]有什么区别呢?

简单来说,list就是你原来的列表,而list[:]是这个列表的一个“副本”。

想象一下,你有一个装满水果的篮子,这个篮子就是list。如果你直接说“给我这个篮子”,那你得到的就是原来的篮子,里面的水果可以随意拿走、吃掉。

但是如果你说“给我这个篮子的副本”,也就是list[:],那么你得到的是一个新篮子,里面有和原来一模一样的水果。你可以在这个新篮子里做任何事情,比如拿走水果,但原来的篮子里的水果不会受到影响。

所以,listlist[:]的主要区别在于:前者是原来的列表,后者是原列表的一个拷贝,修改一个不会影响另一个。

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 用作变量名,因为这样会遮蔽掉内置的功能。

撰写回答