Si tengo una lista, diga:
ll = ['xx','yy','zz']
y quiero asignar cada elemento de esta lista a una variable separada:
var1 = xx var2 = yy var3 = zz
sin saber cuánto dura la lista, ¿cómo haría esto? Yo he tratado:
max = len(ll) count = 0 for ii in ll: varcount = ii count += 1 if count == max: break
Sé que varcount no es una forma válida de crear una variable dinámica, pero lo que estoy tratando de hacer es crear var0
, var1
, var2
, var3
, etc. en función de lo que es el recuento.
Editar ::
No importa, debería empezar una nueva pregunta.
en general, no se sugiere usar ese tipo de progtwigción para un gran número de elementos / variables de la lista.
Sin embargo, la siguiente statement funciona bien y como se esperaba
a,b,c = [1,2,3]
Esto se llama “desestructuración”.
podría ahorrar algunas líneas de código en algunos casos, por ejemplo, tengo a, b, c como enteros y quiero sus valores de cadena como sa, sb, sc:
sa, sb,sc = [str(e) for e in [a,b,c]]
o mejor
sa, sb,sc = map(str, (a,b,c) )
No es una buena idea hacer esto; ¿Qué harás con las variables después de definirlas?
Pero suponiendo que tengas una buena razón, aquí tienes cómo hacerlo en python:
for n, val in enumerate(ll): globals()["var%d"%n] = val print var2 # etc.
Aquí, globals()
es el espacio de nombres local presentado como un diccionario. La numeración comienza en cero, como los índices de matriz, pero puede decirle a enumerate()
que comience desde 1 en su lugar.
Pero nuevamente: es poco probable que esto sea realmente útil para usted.
Debería volver atrás y reconsiderar por qué necesita variables dinámicas. Lo más probable es que pueda crear la misma funcionalidad haciendo un bucle en la lista, o dividiéndola en trozos.
Si el número de elementos no cambia, puede convertir la lista en una cadena y dividirla en variables.
wedges = ["Panther", "Ali", 0, 360] a,b,c,d = str(wedges).split() print a,b,c,d
En su lugar, haga esto:
>>> var = ['xx','yy','zz'] >>> var[0] 'xx' >>> var[1] 'yy' >>> var[2] 'zz'
Supongo que está obteniendo la lista a través de una consulta SQL, por qué no puede comprometerse con una longitud. Con eso me parece obvio que desea tomar esos valores y ejecutar comandos SQL adicionales usando cada valor de la lista recién adquirida por separado. Este no es un concepto desviado si lo toma desde una perspectiva SQL, y si estoy en lo correcto, le proporcionaré la syntax. Sin embargo, no necesitará crear nombres de variables separados con esta solución y no perder la versatilidad en la que está trabajando. SI ESTOY INCORRECTO POR PERDER EL TIEMPO