Я разработал способ удаления определенного элемента из списка.Удалить определенный товар из списка
"peppers", "cheese", "mushrooms", "bananas", "peppers"
я могу найти пункт «перец», и изменить его на «пошли!», Но я действительно хочу, чтобы удалить элемент, используя
del blist[idx]
Но это вызывает ошибку, и я дон Не знаю почему.
myList = ["peppers", "cheese", "mushrooms", "bananas", "peppers"]
def findInList (needle, haystack):
needle = needle.lower()
findy = []
# loops over list elements
for i in range(0, len(haystack)):
temp = haystack[i].lower()
idx = temp.find(needle)
if (idx != -1): findy.append(i)
return findy
def deleteItemInList(alist, blist):
for i in range(0, len(alist)):
idx = alist[i]
blist[idx] = "Gone!"
# del blist[idx]
# find items in list
mySearch = findInList("Peppers", myList)
# remove item from list
deleteItemInList(mySearch, myList)
print myList
Traceback: следующим
Traceback (most recent call last):
File "delete_in_list.py", line 23, in <module>
deleteItemInList(mySearch, myList)
File "delete_in_list.py", line 16, in deleteItemInList
blist[idx] = "Gone!"
IndexError: list assignment index out of range
Может кто-то перебирать код выше и указать, где я буду неправильно.
Не могли бы вы показать фактический след? – thefourtheye
Как правило, это ужасная идея перебирать список и изменять его в одно и то же время и, как правило, лучше создавать новый список. – NightShadeQueen
@NightShadeQueen Вместо того, чтобы удалять элементы в этой точке цикла, я должен искать все остальные элементы, которые мне нужны, и добавлять их в новый список. –