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

Jin*_*ing 50 python

什么,如果有的话,是listlist[:]python 之间的区别?

Ign*_*ams 75

在阅读时,list是对原始列表的引用,并对列表进行list[:]浅层复制.

分配时,list(重新)绑定名称和list[:]切片分配,替换先前列表中的内容.

此外,不要使用它list作为名称,因为它会影响内置.


Mat*_*ell 23

后者是对列表副本的引用,而不是对列表的引用.所以它非常有用.

>>> li = [1,2,3]
>>> li2 = li
>>> li3 = li[:]
>>> li2[0] = 0
>>> li
[0, 2, 3]
>>> li3
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)


tar*_*ish 6

li[:] 创建原始列表的副本。但它并不引用同一个列表对象。因此,您不必冒险通过更改 li[:] 创建的副本来更改原始列表。

例如:

>>> list1 = [1,2,3]
>>> list2 = list1
>>> list3 = list1[:]
>>> list1[0] = 4
>>> list2
[4, 2, 3]
>>> list3
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这里list2是通过改变而改变list1list3不改变。


小智 5

另一个有用的例子是为列表和列表[:]分配不同的类型。例如,

l = [1,2,3]
a = numpy.array([4,5,6])
l = a
print(l)
Run Code Online (Sandbox Code Playgroud)

结果是一个 numpy 数组:

array([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)

尽管,

l = [1,2,3]
a = numpy.array([4,5,6])
l[:] = a
print(l)
Run Code Online (Sandbox Code Playgroud)

结果是一个列表:

[4, 5, 6]
Run Code Online (Sandbox Code Playgroud)