Удалить смежные дубликаты элементов из списка
Google Python Class | Упражнение со списком -
Получив список чисел, верните список, в котором все смежные элементы == были сведены к одному элементу, поэтому [1, 2, 2, 3] возвращает [1, 2, 3]. Вы можете создать новый список или изменить переданный список.
Мое решение с использованием нового списка -
def remove_adjacent(nums):
a = []
for item in nums:
if len(a):
if a[-1] != item:
a.append(item)
else: a.append(item)
return a
Вопрос даже предполагает, что это можно сделать, изменив переданный список. Тем не менее, документация по Python предостерегает от изменения элементов при итерации списка с использованием цикла for.
Мне интересно, что еще я могу попробовать, кроме итерации по списку, чтобы сделать это. Я не ищу решения, но, возможно, намек, который может привести меня в правильном направлении.
ОБНОВИТЬ
- обновил приведенный выше код с предложенными улучшениями.
-пробовал следующее с циклом while, используя предложенные подсказки -
def remove_adjacent(nums):
i = 1
while i < len(nums):
if nums[i] == nums[i-1]:
nums.pop(i)
i -= 1
i += 1
return nums