Disimballare un elenco in Python?


222

Penso che "scompattare" potrebbe essere il vocabolario sbagliato qui - mi scuso perché sono sicuro che questa è una domanda duplicata.

La mia domanda è piuttosto semplice: in una funzione che prevede un elenco di elementi, come posso passare un elemento dell'elenco Python senza ottenere un errore?

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

Sicuramente ci deve essere un modo per espandere l'elenco e passare la funzione 'red','blue','orange'sullo zoccolo?

Risposte:



32

Sì, puoi usare la *argssintassi (splat):

function_that_needs_strings(*my_list)

dove my_listpuò essere qualsiasi iterabile; Python eseguirà il ciclo sull'oggetto specificato e utilizzerà ogni elemento come argomento separato per la funzione.

Vedere la documentazione dell'espressione di chiamata .

Esiste anche un equivalente di parametro parola chiave, usando due stelle:

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

e esiste una sintassi equivalente per specificare gli argomenti catch-all in una firma di funzione:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.