итерация проходит не по очереди! Python
Здраствуйте, я делаю задание, и столкнулся, что самый последний фор, скачет по списку, вместо того чтобы идти по i. Вот код:
arr = ['инженер-конструктор Игорь', 'главный бухгалтер МАРИНА', 'токарь высшего разряда нИКОЛАй', 'директор аэлита']
for i in range(len(arr)):
arr[i].islower()
last_len = len(arr)
for i in range(len(arr)):
temporary_list = arr[i].split(" ")
hm_indexes = len(temporary_list) -1
temporary_name = temporary_list[hm_indexes]
name = temporary_name.lower().title()
arr.append(name)
print(arr)
for words in arr:
print(words)
arr.remove(words)
Пробовал while, не получилось. Предпочту ничего не менять, кроме последнего цикла, для моей задачи. В этом цикле, мне нужно удалить все до "Игорь" НЕ ВКЛЮЧИТЕЛЬНО! Помогите пожалуйста. Вывод удалающихся элементов такой: инженер-конструктор Игорь, токарь высшего разряда нИКОЛАй, Игорь, Николай,
Ответы (2 шт):
Удалять элементы из списка при итерации по списку - НЕЛЬЗЯ
Единственный корректный способ удаления в цикле - итерировать с конца массива до начала.
Это можно легко починить, итерируясь по копии списка:
for words in arr.copy():
print(words)
arr.remove(words)
Но вообще это плохая практика, лучше так не делать, а использовать списковое включение для создания нового списка:
arr = [a for a in arr if тут_условие_сохранения_элемента_в_списке]