我想知道 del 运算符用什么更快,结果我写了这样的代码,但是循环和变量的行为让我有点惊讶,为什么 while 循环中的计数从 50 开始?
import random
import string
import time
listTest = [];
dictinaryTest = {};
for i in range(100):
n = round(random.random()*10);
listTest.append(n);
dictinaryTest.update({i:n})
print("listTest =",len(listTest))
print("dictinaryTest =",len(dictinaryTest))
print("dictinaryTest =",dictinaryTest)
start_timeList = time.time()
j= 0
while j < len(listTest):
del listTest[j]
j+=1
end_timeList = time.time() - start_timeList;
print(end_timeList)
start_timeDict = time.time()
k=0
while k < len(dictinaryTest):
del dictinaryTest[k]
k += 1;
end_timeDict = time.time() - start_timeDict;
print(end_timeDict)
print(dictinaryTest)
print(listTest);
初始列表的样子:
循环后列表的样子:
因为你正在锯掉你所坐的树枝。
您从数组中删除元素(所有后续元素都向左移动)并同时增加索引值。事实证明,您每隔一个元素就删除一次。