Remover elementos duplicados adjacentes de uma lista
Classe Google Python | Exercício da lista -
Dada uma lista de números, retorne uma lista em que todos os elementos == adjacentes foram reduzidos a um único elemento; portanto, [1, 2, 2, 3] retorna [1, 2, 3]. Você pode criar uma nova lista ou modificar a lista passada.
Minha solução usando uma nova lista é -
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
A pergunta até sugere que isso poderia ser feito modificando a lista passada. No entanto, a documentação do python alertou contra a modificação de elementos ao iterar uma lista usando o loop for.
Gostaria de saber o que mais posso tentar além de repetir a lista, para fazer isso. Não estou procurando a solução, mas talvez uma dica que possa me levar na direção certa.
ATUALIZAR
- atualizou o código acima com melhorias sugeridas.
- tentei o seguinte com um loop while usando dicas sugeridas -
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