Python: Unterschied zwischen append und extend verstehen

7

Der folgende Code wird nicht in seinem aktuellen Zustand ausgeführt. Wenn ich sum_vec.extend( vec1[i] + vec2[i] ) in sum_vec.append( vec1[i] + vec2[i] ) ändere, funktioniert es jedoch gut. Ich verstehe das grundlegende Unterschied zwischen append und extend, aber ich verstehe nicht, warum der Code nicht funktioniert, wenn ich extendiere.

%Vor%     
AlanH 08.04.2015, 11:18
quelle

5 Antworten

17

Wie andere bereits erwähnt haben, verwendet extend einen iterierbaren Wert (z. B. eine Liste, ein Tupel oder eine Zeichenfolge) und fügt jedes Element des iterablen Objekts einzeln zu der Liste hinzu, während append sein Argument dem Argument hinzufügt Ende der Liste als einzelnes Element. Der wichtigste Punkt ist, dass extend eine effizientere Version ist, die append mehrmals aufruft.

%Vor%

append kann ein iterables Argument verwenden, behandelt es aber als einzelnes Objekt:

%Vor%     
chepner 08.04.2015, 12:02
quelle
5

Sie können die Dokumentation zur Liste lesen:

list.append fügt ein einzelnes Element am Ende der Liste hinzu:

  

Fügt ein Element am Ende der Liste hinzu; äquivalent zu [len (a):] = [x].

list.extend verwendet einen iterierbaren Wert und fügt alle Elemente zum Ende der Liste hinzu:

  

Erweitern Sie die Liste, indem Sie alle Elemente in der angegebenen Liste hinzufügen; äquivalent zu [len (a):] = L.

Sie müssen Folgendes verwenden:

%Vor%

Auf diese Weise wird ein iterabler Wert mit einem einzelnen Element ( vec1[i] + vec2[i] ) übergeben. Aber list.append ist besser geeignet, wenn Sie immer nur ein einzelnes Element hinzufügen.

    
Reut Sharabani 08.04.2015 11:22
quelle
5

Wenn Sie Ihren Code ausführen, erhalten Sie eine Ausnahme wie folgt:

%Vor%

Mit anderen Worten erwartet die extend -Methode ein iterables as Streit. Die Append-Methode ruft jedoch ein Element als Argument ab.

Hier ist ein kleines Beispiel für den Unterschied zwischen extend und append:

%Vor%

Ausgabe:

%Vor%     
Sam Bruns 08.04.2015 11:23
quelle
2

Die Methode append fügt ihren Parameter als einzelnes Element zur Liste hinzu, während extend eine Liste erhält und ihren Inhalt hinzufügt.

%Vor%     
Haresh Shyara 08.04.2015 11:26
quelle
1

extend benötigt einen iterablen Parameter Wenn Sie die Liste um ein einzelnes Element erweitern möchten, müssen Sie sich in einer Liste kleiden

%Vor%     
Marek 08.04.2015 11:24
quelle

Tags und Links