149 Stimmen

Was ist in Python der Unterschied zwischen ".append()" und "+= []"?

Was ist der Unterschied zwischen:

some_list1 = []
some_list1.append("something")

y

some_list2 = []
some_list2 += ["something"]

1voto

RobBlanchard Punkte 590

Seit heute und Python 3.6 sind die von @Constantine gelieferten Ergebnisse nicht mehr dieselben.

Python 3.6.10 |Anaconda, Inc.| (default, May  8 2020, 02:54:21) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> timeit.Timer('s.append("something")', 's = []').timeit()
0.0447923709944007
>>> timeit.Timer('s += ["something"]', 's = []').timeit()
0.04335783299757168

Es scheint, dass append y += haben jetzt die gleiche Leistung, während sich die Unterschiede bei der Kompilierung überhaupt nicht verändert haben:

>>> import dis
>>> dis.dis(compile("s = []; s.append('spam')", '', 'exec'))
  1           0 BUILD_LIST               0
              2 STORE_NAME               0 (s)
              4 LOAD_NAME                0 (s)
              6 LOAD_ATTR                1 (append)
              8 LOAD_CONST               0 ('spam')
             10 CALL_FUNCTION            1
             12 POP_TOP
             14 LOAD_CONST               1 (None)
             16 RETURN_VALUE
>>> dis.dis(compile("s = []; s += ['spam']", '', 'exec'))
  1           0 BUILD_LIST               0
              2 STORE_NAME               0 (s)
              4 LOAD_NAME                0 (s)
              6 LOAD_CONST               0 ('spam')
              8 BUILD_LIST               1
             10 INPLACE_ADD
             12 STORE_NAME               0 (s)
             14 LOAD_CONST               1 (None)
             16 RETURN_VALUE

0voto

Avnish Nishad Punkte 1184

Nehmen wir zunächst ein Beispiel

list1=[1,2,3,4]
list2=list1     (that means they points to same object)

if we do 
list1=list1+[5]    it will create a new object of list
print(list1)       output [1,2,3,4,5] 
print(list2)       output [1,2,3,4]

but if we append  then 
list1.append(5)     no new object of list created
print(list1)       output [1,2,3,4,5] 
print(list2)       output [1,2,3,4,5]

extend(list) also do the same work as append it just append a list instead of a 
single variable

0voto

Naveen Verma Punkte 50

Die Methode append() fügt der bestehenden Liste ein einzelnes Element hinzu

some_list1 = []
some_list1.append("something")

Hier wird also die some_list1 geändert.

Aktualisiert:

Während die Verwendung von + zum Kombinieren der Elemente von Listen (mehr als ein Element) in der bestehenden Liste ähnlich dem extend (wie korrigiert durch Flux ).

some_list2 = []
some_list2 += ["something"]

Hier sind also some_list2 und ["something"] die beiden Listen, die kombiniert werden.

CodeJaeger.com

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.

Powered by:

X