Déballer une liste en Python?
je pense que 'unpack' 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'étendre la liste, et passer la fonction 'red','blue','orange'
sur le sabot?
3 réponses
Oui, vous pouvez utiliser la syntaxe *args
(splat):
function_that_needs_strings(*my_list)
où my_list
peut être n'importe quel itérable; Python boucle sur l'objet donné et utilise chaque élément comme argument séparé à la fonction.
Voir la appel expression de la documentation .
il y a un équivalent mot-clé-paramètre aussi bien, en utilisant deux étoiles:
kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
et il y a l'équivalent de la syntaxe pour la spécification de fourre-tout des arguments dans une fonction de signature:
def func(*args, **kw):
# args now holds positional arguments, kw keyword arguments
depuis Python 3.5, vous pouvez déballer un montant illimité de list
s.
PEP 448-généralisations supplémentaires sur le déballage
donc ça va marcher:
a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)