Déballer une liste en Python?


222

Je pense que «décompresser» pourrait être le mauvais vocabulaire ici - excuses parce que je suis sûr que c'est une question en double.

Ma question est assez simple: dans une fonction qui attend une liste d'éléments, comment puis-je passer un élément de liste Python sans obtenir d'erreur?

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

Il doit sûrement y avoir un moyen d'élargir la liste et de passer la fonction 'red','blue','orange'sur le sabot?

Réponses:



32

Oui, vous pouvez utiliser la *argssyntaxe (splat):

function_that_needs_strings(*my_list)

my_listpeut être tout itérable; Python bouclera sur l'objet donné et utilisera chaque élément comme argument séparé de la fonction.

Voir la documentation des expressions d'appel .

Il existe également un équivalent de paramètre de mot clé, utilisant deux étoiles:

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

et il existe une syntaxe équivalente pour spécifier les arguments fourre-tout dans une signature de fonction:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.