У меня есть этот .txt файл:Python для цикла с модификацией iterationlist
king james version of the bible
the first book of moses called genesis
Я использую питон-скрипт для статистики по .txt файлов, файл считывается в список final_list
, а затем я выполнить этот код (часть более длинного сценария):
for word in final_list:
output_list.append((word,final_list.count(word)))
final_list[:] = [x for x in final_list if x != word]
#DEBUGGING
print(len(final_list))
print(final_list)
Моя проблема заключается в том, что некоторые из моего списка не используется для петли, которые я подозреваю, форма смотрит на выходе:
12
['james', 'version', 'of', 'the', 'bible', 'the', 'first', 'book', 'of', 'moses', 'called', 'genesis']
11
['james', 'of', 'the', 'bible', 'the', 'first', 'book', 'of', 'moses', 'called', 'genesis']
9
['james', 'of', 'bible', 'first', 'book', 'of', 'moses', 'called', 'genesis']
8
['james', 'of', 'bible', 'book', 'of', 'moses', 'called', 'genesis']
6
['james', 'bible', 'book', 'moses', 'called', 'genesis']
5
['james', 'bible', 'book', 'moses', 'called']
Это заставляет меня задаться вопросом, как работает python for-loop.
Ваш код является очень неэффективным способом подсчета частот слов. Посмотрите на 'collections.Counter()', который сделает работу для вас проще и быстрее. –
Спасибо, я посмотрю. Тем не менее, я думаю, что это не проблема с последними 5 словами, которые не повторяются, не так ли? –
Никогда не изменяйте список, который вы повторяете. Поведение не определено. – Daniel