Nebeneinanderliegende doppelte Elemente aus einer Liste entfernen

Google Python Class | Listenübung -

Geben Sie eine Liste mit Zahlen zurück, und geben Sie eine Liste zurück, in der alle benachbarten == Elemente auf ein einziges Element reduziert wurden. Daher gibt [1, 2, 2, 3] [1, 2, 3] zurück. Sie können eine neue Liste erstellen oder die übergebene Liste ändern.

Meine Lösung mit einer neuen Liste ist -

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

Die Frage legt sogar nahe, dass dies durch Ändern der übergebenen Liste geschehen könnte. In der Python-Dokumentation wurde jedoch vor Änderungen an Elementen gewarnt, während eine Liste mit der for-Schleife durchlaufen wurde.

Ich frage mich, was ich außer dem Durchlaufen der Liste noch versuchen kann, um dies zu erledigen. Ich suche keine Lösung, aber vielleicht einen Hinweis, der mich in die richtige Richtung führen kann.

AKTUALISIERE

-aktualisiert den obigen Code mit Verbesserungsvorschlägen.

-versuchte das Folgende mit einer while-Schleife unter Verwendung der vorgeschlagenen Hinweise -

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

Antworten auf die Frage(32)

Ihre Antwort auf die Frage