¿Hay alguna manera en Python para hacer esto?
a, b, = 1, 3, 4, 5
y entonces:
>>> a
1
>>> b
3
El código anterior no funciona, ya que lanzará
ValueError: too many values to unpack
sol hanfei
¿Hay alguna manera en Python para hacer esto?
a, b, = 1, 3, 4, 5
y entonces:
>>> a
1
>>> b
3
El código anterior no funciona, ya que lanzará
ValueError: too many values to unpack
Solo para agregar a la respuesta de Nolen, en Python 3, también puede descomprimir el resto, así:
>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]
Desafortunadamente, esto no funciona en Python 2.
Usar _
si no necesitas el resto. Como esto: a, b, *_ = array
– Jacobo
9 de junio de 2020 a las 6:08
Ned Batchelder
No hay forma de hacerlo con los literales que has mostrado. Pero puedes cortar para obtener el efecto que deseas:
a, b = [1, 3, 4, 5, 6][:2]
Para obtener el dos primeros valores de una lista:
a, b = my_list[:2]
+1 a pesar de que el OP dijo que ya sabía esto, pero parece que está descartado.
– Jamylak
7 de julio de 2012 a las 0:23
jamilak
En Python 3 puedes hacer lo siguiente:
>>> a, b, *_ = 1, 3, 4, 5
>>> a
1
>>> b
3
_
es solo un marcador de posición para valores que no necesita
podrías usar _
para representar variables que querías “tirar”
>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3
O en Python 3.x podrías hacer esto:
a, *b = 1, 3, 4
dandote:
In [15]: a
Out[15]: 1
In [16]: b
Out[16]: [3, 4]
Evitaría la excepción, aunque tendría que analizar b
. Esto supone que solo desea tener dos variables a la izquierda de la =
de lo contrario podrías usar
a, b, *ignore = ....
con v3.x
¿En Python2? o Python3? Por favor etiquete en consecuencia. Asumiendo Python2
– smci
20 de abril de 2013 a las 9:54