TypeError: 'int' - Objekt ist nicht durchsuchbar, warum es passiert
Hier mal drei Beispiele eigentlich.
>>> result = []
>>> for k in range(10):
>>> result += k*k
>>> result = []
>>> for k in range(10):
>>> result.append(k*k)
>>> result = [k*k for k in range(10)]
Zuerst macht man einen Fehler. Fehler drucken wie unten
TypeError: 'int' object is not iterable
Jedoch, die zweite und die Dritte funktioniert gut.
Konnte ich nicht verstehen den Unterschied zwischen diesen drei Aussagen.
InformationsquelleAutor nextdoordoc | 2013-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
In-place zusätzlich auf ein list-Objekt erweitert die Liste mit den Elementen des durchsuchbar.
k*k
nicht durchsuchbar, so dass Sie kann nicht wirklich "hinzufügen", um eine Liste.Müssen Sie
k*k
eine iterierbar:InformationsquelleAutor Blender
result
ist ein list-Objekt (ohne Einträge, zunächst).Den
+=
operator auf eine Liste ist im Grunde das gleiche wie der Aufruf seineextend
Methode auf, was auf der rechten Seite. (Es gibt einige subtile Unterschiede hier nicht relevant, aber siehe die python2-Programmierung FAQ für details.) Dieextend
Methode für eine Liste versucht zu iterieren über die (einzige) argument, undint
ist nicht durchsuchbar.(Mittlerweile, natürlich, das
append
Methode fügt nur seine (einzige) argument, damit das funktioniert. Die Liste Verständnis ist ganz anders intern, und ist die wirksamste Methode, wie die Liste Gebäude ist fertig mit viel weniger interne Füssing-über.)InformationsquelleAutor torek
Iteration durch eine ganze Zahl statt einer Zeichenkette oder Sequenz.
Für
result += k*k
nur,wenn k eine Reihe/Sequenz-Eingang,dann würde es wahr sein, aber wenn k für eine Zahl, das Ergebnis wäre eine fortgesetzte summation.Für
result.append(k*k)
,ob k ein string oder eine Zahl,das Ergebnis wird sequentiell Ergänzungen.InformationsquelleAutor Ntabgoba
Ich weiß, das ist zu alt, aber für jeden, der landet hier, das ist eine einfache, reproduzierbare Beispiel zu veranschaulichen, "int" - Objekt ist nicht durchsuchbar " Fehler.
InformationsquelleAutor ewalel