Was ist der Unterschied zwischen den Listenmethoden append()
y extend()
?
Antworten
Zu viele Anzeigen?Ich hoffe, dass ich einen nützlichen Beitrag zu dieser Frage leisten kann. Wenn Ihre Liste ein Objekt eines bestimmten Typs speichert, zum Beispiel Info
Hier ist eine Situation, die extend
Methode ist nicht geeignet: In einem for
Schleife und die Erzeugung einer Info
Objekt jedes Mal und mit extend
um sie in Ihrer Liste zu speichern, wird dies fehlschlagen. Die Ausnahme ist wie unten:
TypeError: 'Info'-Objekt ist nicht iterierbar
Aber wenn Sie die append
Methode ist das Ergebnis in Ordnung. Denn jedes Mal, wenn Sie die extend
wird es immer wie eine Liste oder eine andere Auflistung behandelt, iteriert und hinter die vorherige Liste gestellt. Ein bestimmtes Objekt kann natürlich nicht iteriert werden.
Um sie intuitiv zu unterscheiden
l1 = ['a', 'b', 'c']
l2 = ['d', 'e', 'f']
l1.append(l2)
l1
['a', 'b', 'c', ['d', 'e', 'f']]
Es ist wie l1
einen Körper in ihrem Körper reproduzieren (verschachtelt).
# Reset l1 = ['a', 'b', 'c']
l1.extend(l2)
l1
['a', 'b', 'c', 'd', 'e', 'f']
Es ist, als würden zwei getrennte Menschen heiraten und eine gemeinsame Familie gründen.
Außerdem habe ich einen ausführlichen Spickzettel mit allen Methoden der Liste für Sie erstellt.
list_methods = {'Add': {'extend', 'append', 'insert'},
'Remove': {'pop', 'remove', 'clear'}
'Sort': {'reverse', 'sort'},
'Search': {'count', 'index'},
'Copy': {'copy'},
}
append
"erweitert" die Liste (an Ort und Stelle) um nur einen Artikel das einzelne (als Argument) übergebene Objekt.
extend
"erweitert" die Liste (an Ort und Stelle) um so viele Artikel wie das (als Argument) übergebene Objekt enthält.
Dies mag etwas verwirrend sein für str
Objekte.
- Wenn Sie eine Zeichenkette als Argument übergeben:
append
fügt eine einzelne Zeichenkette am Ende hinzu, aberextend
fügt so viele "einzelne" 'str'-Elemente hinzu, wie die Länge der Zeichenkette beträgt. - Wenn Sie eine Liste von Zeichenketten als Argument übergeben:
append
fügt am Ende immer noch ein einzelnes "Listen"-Element hinzu undextend
fügt so viele 'Listen'-Elemente hinzu, wie die Länge der übergebenen Liste beträgt.
def append_o(a_list, element): a_list.append(element) print('append:', end = ' ') for item in a_list: print(item, end = ',') print() def extend_o(a_list, element): a_list.extend(element) print('extend:', end = ' ') for item in a_list: print(item, end = ',') print() append_o(['ab'],'cd') extend_o(['ab'],'cd') append_o(['ab'],['cd', 'ef']) extend_o(['ab'],['cd', 'ef']) append_o(['ab'],['cd']) extend_o(['ab'],['cd'])
produziert:
append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,
Append und extend sind einer der Erweiterungsmechanismen in Python.
Anhängen: Fügt ein Element an das Ende der Liste an.
my_list = [1,2,3,4]
Um der Liste ein neues Element hinzuzufügen, können wir die Methode append wie folgt verwenden.
my_list.append(5)
Die Standardposition, an der das neue Element hinzugefügt wird, ist immer die Position (Länge+1).
Einfügen: Die Methode insert wurde verwendet, um die Einschränkungen von append zu überwinden. Mit insert können wir die genaue Position, an der das neue Element eingefügt werden soll, explizit festlegen.
Methodendeskriptor von insert(index, object). Sie nimmt zwei Argumente entgegen, wobei das erste der Index ist, mit dem wir unser Element einfügen wollen, und das zweite das Element selbst.
Example: my_list = [1,2,3,4]
my_list[4, 'a']
my_list
[1,2,3,4,'a']
Erweitern: Dies ist sehr nützlich, wenn wir zwei oder mehr Listen zu einer einzigen Liste verbinden wollen. Wenn wir zwei Listen ohne extend verbinden wollen, enthält das resultierende Objekt eine Liste von Listen.
a = [1,2]
b = [3]
a.append(b)
print (a)
[1,2,[3]]
Wenn wir versuchen, auf das Element an Position 2 zuzugreifen, erhalten wir eine Liste ([3]) anstelle des Elements. Um zwei Listen zu verbinden, müssen wir append verwenden.
a = [1,2]
b = [3]
a.extend(b)
print (a)
[1,2,3]
So verbinden Sie mehrere Listen
a = [1]
b = [2]
c = [3]
a.extend(b+c)
print (a)
[1,2,3]
- See previous answers
- Weitere Antworten anzeigen