2017-03-11 5 views
0

Ich verwende Python 3.6 Ich habe eine Liste:Listen in Python immer gelöscht

listA = [1,2,3,1,2,4] 

Ich versuche, die sich wiederholende Elemente aus der Liste zu entfernen, so dass die endgültige Liste wird

sein
listA = [3,4] 

Nachdem ich eine Schleife einmal gemacht habe und 1s aus der Liste mit Pop lösche, rückt meine Schleife automatisch auf 3 vor, anstatt auf 2. Um dies zu vermeiden, habe ich folgende Logik verwendet:

ListB= ListA 
ListA.clear() 
ListA = ListB 

aber sobald ich ListA lösche, wird auch die andere Liste ListB automatisch gelöscht. Wie kann ich dies vermeiden oder dieses Problem lösen?

+1

Erstellen Sie eine Kopie: 'ListB = ListA.copy()' oder 'ListB = Liste (ListA)' oder 'ListB = ListA [:]'. Andernfalls beziehen sich "ListB" und "ListA" auf dasselbe Objekt. –

+1

'ListA' ist nicht die Liste, es ist ein * Name * für die Liste. 'ListB = ListA' bedeutet' ListB' ist ein anderer Name für dieselbe Liste. –

+1

Mögliches Duplikat von [Wie man eine Liste klont oder kopiert?] (Http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list) – skrx

Antwort

-1

Namen von Listen in Python sind eigentlich nur Referenzen, so dass Ihre neue Liste eine Referenz auf die gleiche Liste ist. Um tatsächlich eine neue Liste machen können Sie

ListB = list(ListA) 
+0

* Namen * in Python sind eigentlich nur Verweise. –

+0

@PeterWood fair genug. Ich meine das Standardverhalten von Listen, da Tupel nicht funktionieren würden. Fest. –

+0

Wie funktionieren Tupel? –

2

Objekte in Python verwenden, werden durch Bezugnahme gespeichert, was bedeutet, dass Sie nicht den Wert von ListA zu ListB zuweisen, sondern ein Zeiger auf die object.You verwenden können is Operator um zu testen, ob zwei Objekte die gleiche Adresse im Speicher haben.

Sequenzen können so durch Schneiden kopiert Sie diese Liste kopieren verwenden können:

b = a[:] 

Auch Sie

b = list(a)

verwenden können Oder Sie copy() Modul verwenden können:

from copy import copy 
b = copy(a) 

Weitere Informationen finden Sie unter How do I copy an object in Python?