2010-08-17 5 views
24

Wie lösche ich eine ganze Reihe, es keine Elemente verlassen?Erase ganze Reihe Python

Ich möchte, dies zu tun, so kann ich in ihnen neue Werte speichern (um einen neuen Satz von 100 Schwimmer) und das Minimum zu finden.

Gerade jetzt mein Programm das Minimum von Sätzen liest, bevor ich glaube, weil sie sich mit dem vorherigen Satz noch drin ist anhängt. Ich benutze .append übrigens.

Antwort

38

Beachten Sie, dass list und array verschiedenen Klassen sind. Sie können:

del mylist[:] 

Dies wird tatsächlich Ihre vorhandene Liste ändern. Davids Antwort erstellt eine neue Liste und weist sie der gleichen Variablen zu. Was Sie wollen hängt von der Situation ab (z. B. hat eine andere Variable einen Verweis auf die gleiche Liste?).

Versuchen:

a = [1,2] 
b = a 
a = [] 

und

a = [1,2] 
b = a 
del a[:] 

Drucken a und b jedes Mal, um den Unterschied zu sehen. Nun

+0

+1 Heh schrieben wir fast genau das gleiche, aber y Du warst zuerst. –

+0

Wirklich, gibt es Arrays in Python? Das wusste ich nicht. (Eigentlich wusste ich wahrscheinlich, aber vergessen) Anyway +1 für die Erweiterung auf den Unterschied zwischen unseren Antworten. Ich habe nur geschätzt, dass der Unterschied für das OP nicht von Bedeutung ist. –

+0

ich sehe. das hilft @david: yah, es gibt nicht viel Unterschied für mich. aber meine Neuigkeit hat sich verringert: P – pjehyun

18

Es ist ganz einfach:

array = [] 

array gesetzt wird eine leere Liste. (Sie sind Listen in Python genannt, durch die Art und Weise, Arrays nicht)

Wenn das nicht für Sie arbeiten, bearbeiten Sie Ihre Frage ein Codebeispiel enthalten, die Ihr Problem demonstriert.

+0

haha ​​wow dank – pjehyun

3

ja Arrays existieren, und nicht, dass sie nicht anders Listen, wenn es um Dinge wie del und append:

>>> from array import array 
>>> foo = array('i', range(5)) 
>>> foo 
array('i', [0, 1, 2, 3, 4]) 
>>> del foo[:] 
>>> foo 
array('i') 
>>> foo.append(42) 
>>> foo 
array('i', [42]) 
>>> 

Unterschiede bemerkenswert: Sie müssen die Art angeben, wenn das Array erstellen und Sie Lagerung auf Kosten der zusätzlichen Zeit zu sparen zwischen dem C-Typ und der Python-Typ konvertieren, wenn Sie tun arr[i] = expression oder arr.append(expression) und lvalue = arr[i]

1

nun die Frage zu beantworten, dass vielleicht sollten Sie gefragt haben, wie „ich bin 100 f bekommen Schweinereien bilden sich irgendwo; brauche ich, um sie in einem Array oder Liste zu setzen, bevor ich das Minimum zu finden“

Antwort: Nein, wenn somewhere ist ein iterable, anstatt dies zu tun:

temp = [] 
for x in somewhere: 
    temp.append(x) 
answer = min(temp) 

Sie dies tun können:

answer = min(somewhere) 

Beispiel:

answer = min(float(line) for line in open('floats.txt'))