list = [1,1,1,1,1,1,2,3,4,4,5,1,2]
i = 0
dupe = False
while i < len(list)-1:
if list[i] == list[i+1]:
del list[i]
dupe = True
elif dupe:
del list[i]
dupe = False
else:
i += 1
Но это кажется неуклюжим и не питоническим, есть ли у вас более умный/элегантный/более эффективный способ реализовать это?
Мне был любопытен вопрос: устранить последовательные дубликаты элементов списка и как это должно быть реализовано в Python.
Я придумал следующее:< /p>
[code]list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0
while i < len(list)-1: if list[i] == list[i+1]: del list[i] else: i = i+1 [/code]
Вывод:
[code][1, 2, 3, 4, 5, 1, 2] [/code]
Что я думаю, это нормально.
Мне стало любопытно, и я захотел посмотреть, смогу ли я удалить [b]элементы[/b], которые имели последовательные дубликаты и получают следующий результат:
[code][2, 3, 5, 1, 2] [/code]
Для этого я сделал следующее:
[code]list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 dupe = False
while i < len(list)-1: if list[i] == list[i+1]: del list[i] dupe = True elif dupe: del list[i] dupe = False else: i += 1 [/code]
Но это кажется неуклюжим и не питоническим, есть ли у вас более умный/элегантный/более эффективный способ реализовать это?