我无法解释以下行为:
l1 = [1, 2, 3, 4]
l1[:][0] = 888
print(l1) # [1, 2, 3, 4]
l1[:] = [9, 8, 7, 6]
print(l1) # [9, 8, 7, 6]
似乎 l1[:][0]
指的是一个副本,而 l1[:]
指的是对象本身。
最佳答案
这是由 python 的特性引起的,该特性允许您将一个列表分配给另一个列表的一部分,即
l1 = [1,2,3,4]
l1[:2] = [9, 8]
print(l1)
将l1
的前两个值分别设置为9
和8
。同样,
l1[:] = [9, 8, 7, 6]
为 l1
的所有元素分配新值。
有关分配的更多信息,请参阅 the docs .
关于Python:列表和它们的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658877/