Нахождение дублей фраз в тексте

Рейтинг: 0Ответов: 1Опубликовано: 01.02.2023

Есть задача проверять текст на дублирующиеся предложения. когда перенесли пару абзацев, а старый кусок не удалили. замысел - побить весь текст на фразы(запись в списке), сделать два списка - брать фразу из одного и сравнивать с другим. фраза из рабочего списка, с которым сравнивается - удаляется, на следующей итерации список опять приводится к эталонному и из него удаляется следующая фраза. эталонный - lst, рабочий - loop. по неясной мне причине эталонный список тоже уменьшается, хотя в коде я этого не вижу.

text= 'Атас. Бинго. Атас. Кошерно'
text=text.replace('\n', '')
lst= text.split('.')
ll=len(lst)
print ('первый список', lst)
for l in range (ll):
    loop = lst
    print ('sravni',l, lst[l],loop[l])
    del loop [l]
    print ('лист', lst)
    #print ('sravni222',lst[l],loop[l])
    if lst[l] in loop:
        print ('loop', l, lst[l])
    else:
        pass
print (ll)
print ( lst)

много принтов - искал причину.

Ответы

▲ 2

Списки является ссылочным типа, а это значит, что строка loop = lst не копирует список lst в переменную loop, а лишь объявляет loop синонимом переменной lst.
Т.е. все изменения в переменной loop отразятся и на списке lst и наоборот.
Это должно помочь:

loop = lst[:]