Форум сайта python.su
Доброго времени суток!
Пишу такое условие
l=["dr101-mr99", "mr99-out00", "dr101-out00", "scout1-scout2", "scout3-scout1", "scout1-scout4", "scout4-sscout", "sscout-super"] print l for i in l: if i=="scout3-scout1": l.pop(l.index(i)) print l
l=["dr101-mr99", "mr99-out00", "dr101-out00", "scout1-scout2", "scout3-scout1", "scout1-scout4", "scout4-sscout", "sscout-super"] print l x=[l for i in l if i=="scout3-scout1" l.pop(l.index(i))] print x
Офлайн
Ошибка классическая: удалять элементы списка в цикле нельзя.
Офлайн
>>> lst = ["dr101-mr99", "mr99-out00", ... "dr101-out00", "scout1-scout2", ... "scout3-scout1", "scout1-scout4", ... "scout4-sscout", "sscout-super"] >>> >>> lst = [i for i in lst if i != "scout3-scout1"] >>> lst ['dr101-mr99', 'mr99-out00', 'dr101-out00', 'scout1-scout2', 'scout1-scout4', 'scout4-sscout', 'sscout-super'] >>>
EvgenKliml.pop(l.index(i))
lst.remove(i)
Отредактировано py.user.next (Июнь 11, 2014 11:59:01)
Офлайн
FishHook
Ошибка классическая: удалять элементы списка в цикле нельзя.
Отредактировано Budulianin (Июнь 11, 2014 21:49:16)
Офлайн
Можно удалять, но следить за смещением индекса, например
lst = ["dr101-mr99", "mr99-out00", "dr101-out00", "scout1-scout2", "scout3-scout1", "scout1-scout4", "scout4-sscout", "sscout-super"] deleted = 0 for i in range(len(lst)): if lst[i-deleted] == "scout3-scout1": del lst[i-deleted] deleted += 1
Офлайн
BudulianinА еще переходить дорогу на красный свет и заплывать за буйки.
И да. Удалять элементы списка в цикле можно
Офлайн
FishHook, дополню:
Превышать скорость, ездить без тормозов, не предохраняться, курить, пить ….
Офлайн
FishHook
4kpt_II
Для цикла без использования итератора, эти сравнения немного неуместны.
Офлайн
dimy44
Я же не написал чего курить
Офлайн