Tengo una lista a = [1,2,3,4,5]

No entiendo por qué el siguiente código no produce [2,3,4,5,1]

a[1:].append(a[0])

Intenté leer sobre el método append (), así como el corte de listas en Python, pero no encontré una respuesta satisfactoria.

4
shubhamgoel27 6 oct. 2019 a las 09:28

3 respuestas

La mejor respuesta

a[1:] te da un list completamente nuevo, pero no lo estás asignando a ninguna variable, por lo que simplemente se descarta después de esa línea. Debe asignarlo a algo (por ejemplo, b) y luego agregarlo (de lo contrario, append cambiaría la lista pero no devolvería nada):

a = [1,2,3,4,5]
b = a[1:]
b.append(a[0])

Y ahora b es su salida deseada [2,3,4,5,1]

4
Ofer Sadan 6 oct. 2019 a las 06:35

Creo que aquí simplemente no entiendes la función append. Al igual que mi respuesta en Pasar una variable de un archivo a otro como una variable de clase después de la modificación en línea, append es una operación en el lugar que simplemente actualiza la lista original y no devuelve Ninguno.

Su llamada en cadena a[1:].append(a[0]) devolverá el valor de retorno de la última llamada en la cadena, por lo que devolverá el valor de la función append, que es Ninguno.

Al igual que el comentario de @flakes en otra respuesta, a[1:] + a[:1] devolverá su valor objetivo. También puedes probar a[1:][1:][1:] que devolverá algunos resultado. Entonces, el punto clave es que la función append es la función en el lugar.

Vea python más en la lista

Es posible que haya notado que los métodos como insertar, eliminar u ordenar que solo modifican la lista no tienen ningún valor de retorno impreso - they return the default None. 1 Este es un principio de diseño para todas las estructuras de datos mutables en Python.

1
Fogmoon 6 oct. 2019 a las 08:04

Primero, agregue el primer elemento a [0] a la lista

a.append(a[0])

Y luego excluir el primer elemento

a[1:]
0
Mohammed Bahhari 6 oct. 2019 a las 08:53
58254776