Desempaquetar los dos primeros elementos en lista/tupla

1 minuto de lectura

avatar de usuario
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

  • ¿En Python2? o Python3? Por favor etiquete en consecuencia. Asumiendo Python2

    – smci

    20 de abril de 2013 a las 9:54

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


avatar de usuario
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

avatar de usuario
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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad