我試圖找到切片分配和列表的常規分配之間的性能差異。下面是代碼:256之後的列表理解分配/比較失敗
import time
N = 1000
a = list(range(N))
b = list(range(N))
time1 = time.time()
for i in range(N):
a = [x for x in a if x is not i]
time2 = time.time()
for i in range(N):
b[:] = [x for x in b if x is not i]
time3 = time.time()
print a
print b
print time2 - time1
print time3 - time2
我的期望是,每個列表a
和b
,這一次刪除一個元素,使print a
和print b
都打印空列表。相反,他們似乎總是打印起始列表,但缺少第一個256
元素。
它們都打印:
[257, 258, 259 ... N-1]
這是怎麼回事?
我正在使用Python 2.7.6。
因爲小整數在CPython中被緩存,所以使用'!='而不是'is'運算符。 –