2012-06-16 19 views
5

Digamos que hay una función func() que toma dos argumentos, a y b. ¿Existe algún tipo de técnica en Python para pasar una sola lista mylist que tenga ambos valores para la función?pasando una lista de valores en lugar de múltiples argumentos a una función?

def myfunc(a, b): 
    return a+b 

myfunc([1, 2]) 

Si uno estaba completamente seguro de que siempre estaba llamando a la misma función y sabían cuántos argumentos que se necesita, se podría hacer algo como esto:

mylist = [1, 2] 
a, b = mylist 

myfunc(a, b) 

Pero lo que si usted tiene listas que necesita para alimentar a ciertas funciones, y cada una tiene diferentes cantidades de argumentos? Se podrían escribir líneas separadas de código para cada una de sus funciones para descomprimir las listas en variables y pasarlas a las funciones correspondientes, pero si Python tiene algo incorporado para pasar una sola lista en lugar de valores de argumento individuales (cuando se está seguro de antemano esa lista tiene la cantidad correspondiente de valores), entonces se vería mucho mejor y lo más importante requeriría muchas menos líneas de código.

Respuesta

8

Puede utilizar *-unpack the list into arguments:

myfunc(*mylist) 
+3

sabía Python tendría algo como esto! –

+3

@ user975135 Esto también se puede hacer con dicts, que es útil para argumentos de palabra clave o funciones de llamada con muchos argumentos: 'mydict = {'a': 1, 'b': 2}' 'myfunc (** mydict)' – Darthfett

4
def myfunc(a, b): 
    return a+b 

mylist = [1, 2] 
myfunc(*mylist) 

Aquí mylist puede haber list, tuple, etc string de longitud 2.

+0

+1, puede ser cualquier secuencia, no solo una lista – PaulMcG

Cuestiones relacionadas