根据之前的回答
切片列表不会生成列表中对象的副本;它只是复制对它们的引用。
但是,当我运行以下命令时:
from heapq import heapify
import random as r
def heapfiddling(a):
heapify(a[1:])
return a
r.seed(42)
a = [r.randrange(1,100) for i in range(10)]
print("a", a)
print("s", sorted(a))
print("h", heapfiddling(a))
我明白了
a [82, 15, 4, 95, 36, 32, 29, 18, 95, 14]
s [4, 14, 15, 18, 29, 32, 36, 82, 95, 95]
h [82, 15, 4, 95, 36, 32, 29, 18, 95, 14]
最后的打印输出不会改变基础列表a
。但是,当将切片从 更改a[1:]
为a
(将其传递到heapify
)时,最后的打印输出会更改:
h [4, 14, 29, 18, 15, 32, 82, 95, 95, 36]
为什么?