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.
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.
append
kann ein iterables Argument verwenden, behandelt es aber als einzelnes Objekt:
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.
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%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%