Я пишу python программу, которая удаляет повторяющиеся слова из файла. Слово определяется как любая последовательность символов без пробелов, и дубликат является дубликатом независимо от случая, поэтому: дубликаты, дубликаты, дубликаты, дубликаты являются дубликатами. Как это работает, я читаю в исходном файле и сохраняю его в виде списка строк. Затем я создаю новый пустой список и заполняю его по одному, проверяя, существует ли текущая строка в новом списке. Я сталкиваюсь с проблемами, когда пытаюсь реализовать преобразование регистра, которое проверяет все экземпляры указанного формата c. Я попытался переписать оператор if следующим образом:
if elem and capital and title and lower not in uniqueList:
uniqueList.append(elem)
Я также попытался написать его с помощью операторов или:
if elem or capital or title or lower not in uniqueList:
uniqueList.append(elem)
Однако я все еще получаю дубликаты. Единственный способ, которым программа работает правильно, это если я напишу код следующим образом:
def remove_duplicates(self):
"""
self.words is a class variable, which stores the original text as a list of strings
"""
uniqueList = []
for elem in self.words:
capital = elem.upper()
lower = elem.lower()
title = elem.title()
if elem == '\n':
uniqueList.append(elem)
else:
if elem not in uniqueList:
if capital not in uniqueList:
if title not in uniqueList:
if lower not in uniqueList:
uniqueList.append(elem)
self.words = uniqueList
Можно ли как-нибудь написать эти вложенные операторы if более элегантно?