Eine Liste in Python entpacken?


222

Ich denke, "Auspacken" könnte hier das falsche Vokabular sein - Entschuldigung, weil ich sicher bin, dass dies eine doppelte Frage ist.

Meine Frage ist ziemlich einfach: Wie kann ich in einer Funktion, die eine Liste von Elementen erwartet, ein Python-Listenelement übergeben, ohne einen Fehler zu erhalten?

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!

Sicherlich muss es eine Möglichkeit geben, die Liste zu erweitern und die Funktion 'red','blue','orange'an den Huf zu übergeben?

Antworten:



32

Ja, Sie können die *args(Splat-) Syntax verwenden:

function_that_needs_strings(*my_list)

wo my_listkann jeder iterierbar sein; Python durchläuft das angegebene Objekt und verwendet jedes Element als separates Argument für die Funktion.

Siehe die Dokumentation zum Anrufausdruck .

Es gibt auch ein Keyword-Parameter-Äquivalent mit zwei Sternen:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)

und es gibt eine äquivalente Syntax zum Angeben von Catch-All-Argumenten in einer Funktionssignatur:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.