Поэтому я пытаюсь создать программу для удаления всех повторяющихся букв из заданной строки.Код в основном самодельный итератор, который я получил из другого поста: Как сбросить итератор списка в Python?
string = "NNEEXXxxTTGGEENNCCOODDEERR"
class rmvDuplicates:
def __init__(self, list, newString):
self.newString = newString
self.list = list
self.idx = 0
self.content = list[self.idx]
def __iter__(self):
return self
def get_content(self, content):
return content
def get_index(self):
return self.idx
def get_content_next(self, content):
try:
self.idx += 1
return self.content
finally:
self.idx -= 1
def remove(self, elem):
del self.list[self.idx]
return
def rewind(self):
self.idx = 0
def __next__(self):
try:
return self.list[self.idx]
except IndexError:
pass
finally:
self.idx += 1
self.content = self.list[self.idx]
new_String = []
li = rmvDuplicates(list(string), new_String)
for elem in li:
if li.get_content(elem) == li.get_content_next(elem):
print(li.get_content(elem))
li.remove(elem)
print(li.list)
print("Hello")
Примечание: print("Hello")
только для целей тестирования
Я немного изменил его, чтобы соответствовать моим потребностям, и он прекрасно работает, пока не достигнет точки IndexError
.
def __next__(self):
try:
return self.list[self.idx]
except IndexError:
pass
finally:
self.idx += 1
self.content = self.list[self.idx]
IЯ уже пытался это выяснить, используя Except-Block с методом pass.
Но, тем не менее, программа отображает это сообщение:
Traceback (most recent call last):
File "rmv_dplc_cls.py", line 49, in <module>
for elem in li:
File "rmv_dplc_cls.py", line 42, in __next__
self.content = self.list[self.idx]
IndexError: list index out of range
Кто-нибудь здесь знает, как это исправить?, поэтому программа продолжает работать и не прерывается.
Спасибо