Was ist der Unterschied zwischen:
some_list1 = []
some_list1.append("something")
y
some_list2 = []
some_list2 += ["something"]
Was ist der Unterschied zwischen:
some_list1 = []
some_list1.append("something")
y
some_list2 = []
some_list2 += ["something"]
Der Unterschied besteht darin, dass verketten wird die resultierende Liste reduzieren, während anhängen. bleiben die Ebenen intakt:
So zum Beispiel mit:
myList = [ ]
listA = [1,2,3]
listB = ["a","b","c"]
Wenn Sie append verwenden, erhalten Sie eine Liste von Listen:
>> myList.append(listA)
>> myList.append(listB)
>> myList
[[1,2,3],['a',b','c']]
Wenn Sie stattdessen concatenate verwenden, erhalten Sie eine flache Liste:
>> myList += listA + listB
>> myList
[1,2,3,"a","b","c"]
Die Leistungstests hier sind nicht korrekt:
append
vs. +=[]
mehrere Male, sollten Sie erklären append
als eine lokale Funktion.z.B..
timeit.Timer('for i in xrange(100): app(i)', 's = [] ; app = s.append').timeit()
Gute Tests sind hier zu finden: Python Liste anhängen vs. +=[]
Das in anderen Antworten erwähnte Rückbindungsverhalten ist unter bestimmten Umständen von Bedeutung:
>>> a = ([],[])
>>> a[0].append(1)
>>> a
([1], [])
>>> a[1] += [1]
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Das liegt daran, dass eine erweiterte Zuweisung immer neu gebunden wird, auch wenn das Objekt an Ort und Stelle geändert wurde. Die Rückbindung ist hier zufällig a[1] = *mutated list*
was bei Tupeln nicht funktioniert.
Zusätzlich zu den in den anderen Antworten beschriebenen Aspekten haben append und +[] ein sehr unterschiedliches Verhalten, wenn Sie versuchen, eine Liste von Listen zu erstellen.
>>> list1=[[1,2],[3,4]]
>>> list2=[5,6]
>>> list3=list1+list2
>>> list3
[[1, 2], [3, 4], 5, 6]
>>> list1.append(list2)
>>> list1
[[1, 2], [3, 4], [5, 6]]
list1+['5','6'] fügt '5' und '6' als einzelne Elemente zu list1 hinzu. list1.append(['5','6']) fügt die Liste ['5','6'] als ein einzelnes Element zu list1 hinzu.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.