2010-10-15 19 views
71

En Python, ¿cómo convierto una lista a * args?Conversión de lista a * args en Python

necesito saber porque la función

scikits.timeseries.lib.reportlib.Report.__init__(*args) 

quiere time_series varios objetos pasados ​​como argumentos *, mientras que tengo una lista de objetos de series de tiempo.

Cualquier ayuda es muy apreciada :)

Respuesta

116

Usted puede utilizar el operador * ante un iterable para expandirlo dentro de la llamada a la función. Por ejemplo:

timeseries_list = [timeseries1 timeseries2 ...] 
r = scikits.timeseries.lib.reportlib.Report(*timeseries_list) 

(Note la * antes timeseries_list)

Desde el python documentation:

Si la sintaxis * expresión aparece en la llamada de función, expresión debe evaluar a un iterable. Los elementos de este iterable se tratan como si fueran argumentos posicionales adicionales; si hay argumentos posicionales x1, ..., xN, y la expresión evalúa a una secuencia y1, ..., yM, esto es equivalente a una llamada con M + N posicional argumentos x1, ..., xN, y1, ..., yM

+4

Olvidaste esto: http://docs.python.org/reference/expressions.html#calls –

1

*args solo significa que la función toma una serie de argumentos, generalmente del mismo tipo.

Consulte this section en el tutorial de Python para obtener más información.

+0

Creo que la OP ya se sabe. La función toma varias args pero tienen una sola lista que quieren pasar como args múltiples. –

+0

@Bryan Oakley: los documentos a los que he vinculado explican cómo hacerlo. – intuited

+4

Si bien es cierto, la forma en que redactó su respuesta parece que el enlace apunta a otro lugar. Creo que tu respuesta será más útil si la reformulas para abordar el desempaquetado en lugar de lo que * args significa. –

10

sí, usar * arg pasando args a una función hará que python descomprima los valores en arg y lo pase a la función.

manera:

>>> def printer(*args): 
print args 


>>> printer(2,3,4) 
(2, 3, 4) 
>>> printer(*range(2, 5)) 
(2, 3, 4) 
>>> printer(range(2, 5)) 
([2, 3, 4],) 
>>> 
Cuestiones relacionadas