python3 print pass open modules for create python python-3.x tuples iterable-unpacking

print - python3 for



Desembale una tupla de Python de izquierda a derecha? (5)

¿Hay una manera limpia / simple de desempacar una tupla de Python en el lado derecho de izquierda a derecha?

Por ejemplo para

j = 1,2,3,4,5,6,7 (1,2,3,4,5,6,7) v,b,n = j[4:7]

¿Puedo modificar la notación de división para que v = j[6], b=j[5], n=j[4] ?

Me doy cuenta de que solo puedo ordenar el lado izquierdo para obtener el elemento deseado, pero creo que podría haber casos en los que me gustaría desempacar la tupla de izquierda a derecha.


En caso de que desee conservar los índices originales (es decir, no desea molestarse en cambiar los valores 4 y 7 a 6 y 3), también puede utilizar:

v, b, n = (j[4:7][::-1])


Esto debería hacer:

v,b,n = j[6:3:-1]

Un valor de paso de -1 partir de 6


Podría ignorar el primero después de revertir y usar el desempaquetado iterable extendido :

j = 1, 2, 3, 4, 5, 6, 7 _, v, b, n, *_ = reversed(j) print(v, b, n)

Lo que te daría:

6 5 4

O si desea obtener elementos arbitrarios, puede usar operator.itemgetter :

j = 1, 2, 3, 4, 5, 6, 7 from operator import itemgetter def unpack(it, *args): return itemgetter(*args)(it) v,b,n = unpack(j, -2,-3,-4) print(v, b, n)

La ventaja de itemgetter es que funcionará en cualquier iterable y los elementos no tienen que ser consecutivos.


puedes probar esto

-1 significa mirar desde atrás, con el último elemento tercero al último elemento

>>> v,b,n=j[-1:-4:-1] >>> print ''v='',v,''b='',b,''n='',n v= 7 b= 6 n= 5 >>>


n,b,v=j[4:7]

También funcionará. Simplemente puede cambiar el orden o los valores desempaquetados devueltos