Python: For-Schleife funktioniert nicht
Warum ist die for-Schleife nicht funktioniert?
l=[1,2,3,4,5]
def times(x):
for i in len(x):
x[i]+=10
times(l)
print l
Sollte im Idealfall drucken Sie die Elemente der Liste um 10 erhöht. Aber es gibt mir die folgende Fehlermeldung:
Traceback (most recent call last):
File "ex1.py", line 5, in <module>
times(l)
File "ex1.py", line 3, in times
for i in len(x):
TypeError: 'int' object is not iterable
Wohin gehe ich falsch?
- for i in len(x) => for i in range(len(x))
- Du hast vergessen, zu Lesen, wie
for
funktioniert in Python.
InformationsquelleAutor Prakhar Mohan Srivastava | 2014-02-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
len
Funktion zurückgegeben wird nur die Länge der Liste. Es ist nur eine Zahl, also man kann nicht Durchlaufen, es mit derfor
Schleife.Vielleicht Sie verwenden wollte
xrange
Funktion, zusammen mit derlen(x)
Verwenden wir
xrange
Funktion hier, weilrange
Funktion erstellen Sie die gesamte Liste im Speicher, bevor die Iteration. Zum Beispiel,wird Ihnen das neu konstruierte Liste mit den Elementen von 0 bis 9. Denken Sie über die Iteration von einer sehr großen Liste. Können sagen, dass die Liste der Größe 10000000. Es ist wirklich eine Verschwendung von Speicher zu generieren, die zahlen von 0 bis 10000000, nur für die Zwecke Durchlaufen, richtig? Das ist, warum wir verwenden
xrange
.xrange
gibt einen wiederholenden Objekt, das eine Anzahl in einer Zeit, während der Iteration. Seine Speicher sehr effizient, da wir nicht zu konstruieren die gesamte Liste.Vorschlag:, es sei denn, es ist absolut notwendig, ändern Sie die ursprüngliche Liste, können Sie erstellen Sie eine neue Liste und gibt es zurück.
def times(my_list ein, my_num = 10):
return [current_num + my_num für current_num in my_list ein]
l = [1,2,3,4,5]
l = mal(l)
print l
Wird es den gleichen Effekt haben auf die Daten, wie der erste. Aber wir verwenden list comprehension um eine neue Liste erstellen und wir weisen Sie der Variablen
l
. So, jetztl
Punkte, um die neu erstellte Liste an die Stelle der alten Liste.Dies ist, weil len(x) ist nur eine ganze Zahl, die Sie brauchen, um eine Liste zu erstellen, z.B.