GOOGLE ADS

Montag, 25. April 2022

Wie lösche ich alle Elemente aus einer bestimmten Liste in Python?

Ich erhalte eine Liste und eine Zahl als Eingabeparameter für eine Methode:

def removeElement(nums: list[int], val: int):

Ich versuche, alle Elemente von zu durchlaufen numsund alle zu entfernen, wenn sie gleich sind.

def removeElement(nums: list[int], val: int):
for i in nums:
if i == val:
nums.remove(i)
print(nums)
return nums

Wenn ich ein array: übergebe [0, 1, 2, 2, 3, 0, 4, 2]und val: eingebe 2, habe ich immer noch die letzte Nummer 2der Liste in der Ausgabe. Ausgang:[0, 1, 3, 0, 4, 2] Geben Sie hier die Bildbeschreibung ein

Hinweis: Ich sollte keine zusätzliche Liste oder eine andere Sammlung für die Raumkomplexität verwenden. Kann mir jemand sagen, was ich hier für einen Fehler mache und wie ich ihn korrigieren kann?


Lösung des Problems

Das Problem ist, dass beim Ausführen von for i in nums:, dem ersten Element von, dann dem 2. usw. izugewiesen wird, selbst wenn einige Elemente entfernt werden, was in Ihrem Fall bedeutet, dass es nach dem Entfernen der ersten 2 an der 3. Position an die 4. Position verschoben wird, die jetzt eine 3 ist, also es überspringt die ursprünglich 4. 2.nums

Um dies zu beheben, können Sie die Anzahl der Vorkommen von zählen valund sie anschließend entsprechend entfernen:

def removeElement(nums: list[int], val: int):
cnt = 0
for i in nums:
if i == val:
cnt += 1
for _ in range(cnt):
nums.remove(val)
print(nums)
return nums

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...