web-dev-qa-db-fra.com

Comment développer une liste pour utiliser des arguments dans Python

Existe-t-il une syntaxe vous permettant de développer une liste dans les arguments d'un appel de fonction?

Exemple:

# Trivial example function, not meant to do anything useful.
def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

# List of values that I want to pass into foo.
values = [1,2,3]

# I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )
136
Brian McFarland

Cela existe, mais c'est difficile à rechercher. Je pense que la plupart des gens l'appellent l'opérateur " splat ".

C'est dans la documentation en tant que " Listes d'arguments de décompression ".

Vous l'utiliseriez comme ceci: foo(*values). Il y en a aussi un pour les dictionnaires:

d = {'a': 1, 'b': 2}
def foo(a, b):
    pass
foo(**d)
160
Daenyth

Vous devez utiliser l'opérateur *, comme foo(*values) Lisez le Python doc listes d'arguments de dépaquetage) .

Lisez aussi ceci: http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

def foo(x,y,z):
   return "%d, %d, %d" % (x,y,z)

values = [1,2,3]

# the solution.
foo(*values)
57
varunl

Essayez ce qui suit:

foo(*values)

Ceci peut être trouvé dans Python docs as npacking Argument Lists) .

9
Andrew Clark

Cela peut être fait avec:

foo(*values)
9
Ikke