Не понимаю поведение переменной

Хочу узнать с чем быстрее работает оператор 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);

Как выглядит начальный список:

введите сюда описание изображения

Как выглядит список после цикла:

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Igor

Потому что Вы по кусочкам отпиливаете сук, на котором сидите.

Вы удаляете элементы из массива (все следующие элементы сдвигаются влево) и в то же время увеличиваете знaчение индекса. Получается, Вы удаляете каждый второй элемент.

→ Ссылка