2009-01-10 13 views
6

¿Cómo podría descomprimir una tupla de desconocido para, digamos, una lista?Python: descomprimir a un número desconocido de variables?

Tengo un número de columnas de datos y se dividen en una tupla por alguna función. Quiero descomprimir esta tupla de variables, pero no sé cuántas columnas tendré. ¿Hay alguna manera de descomprimirlo dinámicamente en tantas variables como necesite?

Gracias por su ayuda :)

Respuesta

7

desempaquetar la tupla a una lista?

l = list(t) 
+0

Pero tengo curiosidad de por qué quieres hacerlo. =) – PEZ

+0

PEZ, estoy haciendo una secuencia de comandos para manejar un montón de trazado utilizando la función numpy 'loadtxt'. La cantidad de columnas de datos se conoce solo en tiempo de ejecución, así que no puedo hacer nombres var. – Nope

+1

Sí, pero si usted tiene los datos en una tupla, a menudo puede trabajar con ellos como puede hacerlo con una lista. t [1] le dará los mismos datos que l [1] sin "desempaquetar". Por supuesto, si está modificando los datos "en su lugar" necesitarían una lista. – PEZ

3

¿Quiere decir que quiere crear variables sobre la marcha? ¿Cómo sabrá su programa cómo hacer referencia a ellos, si se crean dinámicamente?

Las tuplas tienen longitudes, al igual que las listas. Es perfectamente admisible que hacer algo como:

total_columns = len(the_tuple) 

También puede convertir una tupla a una lista, aunque no hay ningún beneficio a hacerlo a menos que quiera empezar a modificar los resultados. (. Las tuplas no se puede modificar; listas puede) Pero, de todos modos, la conversión de una tupla a una lista es trivial:

my_list = list(the_tuple) 

Hay son formas de crear las variables sobre la marcha (por ejemplo, con eval), pero, una vez más, ¿cómo sabría cómo referirse a ellos?

Creo que debería aclarar exactamente lo que está tratando de hacer aquí.

16

Puede usar el asterisco para desempaquetar una longitud variable. Por ejemplo:

foo, bar, *other = funct() 

Esto debería poner el primer punto en foo, la segunda en bar, y todo lo demás en other.

Actualización: Olvidé mencionar que esto es compatible con Python 3.0 solamente.

Cuestiones relacionadas