Czy jest jakiś powód, aby robić coś bardziej skomplikowanego niż jeden z tych dwóch wierszy, jeśli chcesz wyczyścić listę w Pythonie?
old_list = []
old_list = list()
Powodem, dla którego pytam, jest to, że właśnie zobaczyłem to w jakimś działającym kodzie:
del old_list[ 0:len(old_list) ]
a[:x]
oznacza początek od x ia[x:]
oznacza x koniec.a[ 0:len(a) ]
można zapisać jakoa[:]
. Możesz także używać negatywów do liczenia od końca (a[-1]
jest ostatnim elementem).Odpowiedzi:
Wyczyszczenie listy na miejscu wpłynie na wszystkie inne odwołania na tej samej liście.
Na przykład ta metoda nie wpływa na inne odwołania:
Ale ten robi:
Możesz także:
źródło
del a[:]
a
? Myślałema
ib
nawiązałem do tego samego obiektu ... Chcę tylko wiedzieć, dlaczego. Dzięki.a.clear()
, bez problemu!Wykonanie
alist = []
nie powoduje wyczyszczenia listy, po prostu tworzy pustą listę i wiąże ją ze zmiennąalist
. Stara lista będzie istnieć, jeśli będzie miała inne powiązania zmiennych.Aby faktycznie wyczyścić listę w miejscu , możesz użyć dowolnego z następujących sposobów:
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Więcej informacji znajduje się na stronie dokumentacji Zmiennych typów sekwencji .
źródło
Istnieje bardzo prosty sposób na wyczyszczenie listy python. Użyj del nazwa_listy [:] .
Na przykład:
źródło
Wydaje mi się, że del zwróci ci pamięć, a przypisanie nowej listy spowoduje, że stara zostanie usunięta dopiero po uruchomieniu gc. Matter.Może to być przydatne w przypadku dużych list, ale w przypadku małych list powinno być nieistotne.
Edycja : Jako Algorias nie ma to znaczenia.
Zauważ, że
jest równa
źródło
Usunie wartości tej zmiennej listy
Usunie samą zmienną z pamięci
źródło
Istnieją dwa przypadki, w których możesz chcieć wyczyścić listę:
old_list
dalszej części kodu;W przypadku 1 po prostu kontynuujesz zadanie:
W przypadku 2
del
instrukcja zmniejszyłaby liczbę odwołań do obiektu listy, na któryold list
wskazuje nazwa . Jeśli obiekt listy jest wskazywany tylko przez nazwęold_list
at, liczba odwołań wynosiłaby 0, a obiekt zostałby zwolniony do wyrzucania elementów bezużytecznych.źródło
Jeśli wyczyścisz listę, oczywiście już jej nie potrzebujesz. Jeśli tak, możesz po prostu usunąć całą listę za pomocą prostej metody del.
Ale w razie potrzeby możesz go ponownie zainicjować. Lub po prostu wyczyść jego elementy
źródło
innym rozwiązaniem, które działa dobrze, jest utworzenie pustej listy jako pustej listy referencyjnej.
na przykład masz listę jako
a_list = [1,2,3]
. Aby to wyczyścić, wykonaj następujące czynności:spowoduje to
a_list
utworzenie pustej listy, takiej jakempt_list
.źródło