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