Не как не пойму почему не работает. Даже очень не удобно такое спрашивать...))
Просто решил книжку почитать... Python_и_DevOps_Ключ_к_автоматизации_Linux
Вроде интересная, но перед этим по азам языка хоть пробежаться, и на простой части задачки встал, то один елемент остается, то индекс оут оф ренж. Так то можно list.clear() и дело с концом, но интересно почему так...
Используйте команду del для удаления оставшихся имен из списка, чтобы список остался пустым. Выведите список, чтобы убедиться в том, что в конце работы программы список действительно не содержит ни одного элемента.
l = ["Vasia", "Masha", "Tania", 1, 2]
# del l[4]
# del l[3]
# del l[2]
# del l[1]
# del l[0]
# for i in range(len(l):
# print(i, end=" ")
# print(l)
for i in range(len(l)):
del l[i]
print(l)
print(len(l))
Данная конструкция удаляет элемент из списка по индексу... Нет. Данная конструкция сдвигает весь список на один элемент влево, начиная с индекса i + 1 и уменьшает длину списка на 1. Это продемонстрировано при выполнении программы. Хорошо, теперь давайте сопоставим через двоеточие (":") итерирующийся индекс i и кол-во элементов в списке после прохода полной итерации. 0:5 1:4 2:3 3:2 ХОБА! Вот оно пересечение между 2:3 и 3:2 (где в 3:2 - 3: индекс i, 2: размер списка). Получается, что мы пытаемся удалить из списка размера 2 элемент с индексом 3, но так нельзя, ведь такого элемента просто нет в списке :( Если очень хочется удалить все элементы таким образом, то стоит идти по убывающей. Но, в любом случае, делать так не рекомендуется. Вроде бы ушли времена Си с его undefined behavior, но... https://gist.github.com/jEUGENEdev/ba4667a15ab88e4186800992bab11ccbСсылка на код: https://gist.github.com/j