Поскольку на самом деле никто не объяснил свою ошибку правильно:
Ваш while test != len(string):
никогда не правда, как вы держите добавление к первоначальному списку, так что список только продолжает расти и расти, пока в конце концов, вы не кончатся RAM/памяти, вы должны не перебирать и добавлять в тот же список, вам нужно будет сделать копию или просто создать новый пустой список и добавить к нему.
Список начинается с 6 элементов, вы добавляете еще 2, прежде чем снова проверите свое состояние и увеличьте test
на 1, поэтому после первого цикла у вас теперь есть 8 элементов в вашем списке, а тест 1, следующий цикл у вас есть 10 и тест равен 2 и так далее до тех пор, пока у вас не закончится память ...
Есть более эффективные способы, но если вы должны использовать петлю и вставить в исходный список, вы должны начать с третьего элемента и использовать шаг 3 :
string = ['a', 'b', 'c', 'd', 'e', 'f']
for i in range(2, len(string)+2, 3):
string.insert(i, " ")
print (string)
['a', 'b', ' ', 'c', 'd', ' ', 'e', 'f']
Вы также можете использовать itertools.цепь и поймать лишние пустые пространства в конце с ind < len(string) - 1
:
from itertools import chain
print(list(chain.from_iterable((ele, " ") if ind % 2 and ind < len(string) - 1 else ele
for ind, ele in enumerate(string))))
['a', 'b', ' ', 'c', 'd', ' ', 'e', 'f']
[. Учебник здесь] (https://docs.python.org/3.4/tutorial/index.html) – TigerhawkT3
Почему так много голосов? Это разумный вопрос. –
Он не показывает исследовательских усилий и вряд ли будет полезен для всех, кто провел какое-либо исследование. – TigerhawkT3