Ich habe das:
>>> a = [1, 2, 4]
>>> print a
[1, 2, 4]
>>> print a.insert(2, 3)
None
>>> print a
[1, 2, 3, 4]
>>> b = a.insert(3, 6)
>>> print b
None
>>> print a
[1, 2, 3, 6, 4]
Kann ich die aktualisierte Liste trotzdem als Ergebnis erhalten, anstatt die ursprüngliche Liste zu aktualisieren?
python
python-2.7
list
insert
ATOzTOA
quelle
quelle
b = a[:].insert(2,3)
scheint ziemlich kurz zu sein, wirkt sich nicht auf die ursprüngliche Liste aus und ist ziemlich beschreibend.>>> a = [1, 2, 3, 4] >>> b = a[:].insert(2, 5) >>> print b None
Antworten:
l.insert(index, obj)
gibt eigentlich nichts zurück, sondern aktualisiert nur die Liste. Wie ATO sagte, können Sie tunb = a[:index] + [obj] + a[index:]
. Ein anderer Weg ist jedoch:quelle
Leistungsstärkster Ansatz
Sie können das Element auch mithilfe der Slice-Indizierung in die Liste einfügen . Beispielsweise:
Um mehrere Elemente an einem bestimmten Index zusammenzufügen , müssen Sie lediglich eines
list
von mehreren Elementen verwenden, die Sie einfügen möchten. Beispielsweise:Alternative mit Listenverständnis (aber sehr langsam in Bezug auf die Leistung) :
Als Alternative kann erreicht werden unter Verwendung Liste Verständnis mit
enumerate
zu. (Aber bitte machen Sie es nicht so. Es dient nur zur Veranschaulichung) :Leistungsvergleich aller Lösungen
Hier ist der
timeit
Vergleich aller Antworten mit einer Liste von 1000 Elementen für Python 3.4.5:Meine Antwort mit geschnittener Einfügung - Am schnellsten (3,08 usec pro Schleife)
Die von ATOzTOA akzeptierte Antwort basiert auf der Zusammenführung von geschnittenen Listen - Zweiter (6,71 usec pro Schleife)
Rushy Panchals Antwort mit den meisten Stimmen unter Verwendung von
list.insert(...)
- Dritter (26,5 usec pro Schleife)Meine Antwort mit Listenverständnis und
enumerate
- Viertens (sehr langsam mit 168 usec pro Schleife)quelle
3, 3.5
(in der Reihenfolge) in diese Liste einfügen möchte ->a[2:2] = [3,3.5]
. Sehr ordentlichlist.insert
und Slice-Zuweisung), und unter Python 3.8 ist dieser Unterschied vollständig verschwunden. Der klarste Weg, ein Element einzufügenlist.insert
, ist natürlich die Verwendung.Am kürzesten habe ich:
b = a[:2] + [3] + a[2:]
quelle
Am saubersten ist es, die Liste zu kopieren und das Objekt dann in die Kopie einzufügen. Unter Python 3 kann dies erfolgen über
list.copy
:Beim Kopieren von Python 2 kann die Liste über erreicht werden
new = old[:]
(dies funktioniert auch bei Python 3).In Bezug auf die Leistung gibt es keinen Unterschied zu anderen vorgeschlagenen Methoden:
quelle
Verwenden Sie die Python list insert () -Methode . Verwendung:
Beispiel:
Kehrt zurück
[1, 2, 3, 4, 5]
quelle
Is there anyway I can get the updated list as result, instead of updating the original list in place?
Ihre Antwort macht das Gegenteil.