Python 3, range().append() liefert Fehler: 'range' - Objekt hat kein Attribut 'append'
In Python 2.7 die folgenden arbeiten ohne Probleme:
myrange = range(10,100,10)
myrange.append(200)
print(my range)
Ausgabe: [10,20,30,40,50,60,70,80,90,200]
Umgekehrt in Python 3.3.4 die gleiche code-snippet gibt den Fehler zurück: 'range' - Objekt hat kein Attribut 'append'
Könnte bitte jemand erklären, der Grund für diesen Fehler in Python 3.3.4, und, wo möglich, eine Lösung?
Die gewünschte Ausgabe: [10, 20, 30, 40, 50, 60, 70, 80, 90, 200].
Vielen Dank im Voraus,
mrj.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Python2,
range
eine Liste zurückgibt.In Python ist3,
range
gibt eine range-Objekt.Das range-Objekt verfügt nicht über eine append-Methode. Zu beheben, konvertieren Sie das range-Objekt in eine Liste:
Das range-Objekt ist ein iterator. Es gezielt vermeidet, bildet eine Liste aller Werte, da diese mehr Speicher benötigt, und oft Menschen nutzen
range
einfach zu verfolgen einen Zähler -- eine Nutzung, die nicht erfordern, halten Sie die volle Liste im Speicher auf einmal.Vom die docs:
Überprüfen unutbu's Antwort zu wissen, warum Sie können nicht anfügen an ein
range()
.Jedoch halten
range()
-s Iteration-Ansatz durch die Verwendungitertools.chain()
stattdessen zwingen Sie es auf eine Liste und Anhängen, um es dann. Es ist schneller und effizienter.Hinweis:
Hier
list(c)
auch gezwungen, diechain
Objekt und war nur für die Darstellung. Verwenden Sie diechain
Objekt in einemfor
loop statt.