Могу ли я добавить элементы в список, по которому я делаю цикл в Python? [Дубликат]

1

Возможный дубликат:
Python: добавление элемента в список во время итерации

Это не работает, но я не уверен, почему:

for n in poss:
         poss.append(n+6)

Есть ли правило, в котором говорится, что я не могу добавить элементы в список, который я сейчас просматриваю?

  • 0
    Нужно использовать копию. Используйте slice: poss[::] tuple: tuple(poss) или дублирующий список: list(poss) который совпадает с формой фрагмента ...
Теги:

2 ответа

2
Лучший ответ

Добавление в список при повторении через него приведет к бесконечному циклу, так как вы добавляете больше элементов в цикл на каждой итерации.

Вместо этого вы должны перебирать копию списка. Например, попробуйте следующее:

for n in tuple(poss):
    poss.append(n+6)
1

Ваш код действительно работает, но никогда не заканчивается, потому что poss постоянно растет.
Попробуйте:

poss = [1,2]

for n in poss:
    poss.append(n+6)
    if n > 10:
        print poss
        break

дает:

[1, 2, 7, 8, 13, 14, 19]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню