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.
3 respuestas
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]
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.
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.
Primero, agregue el primer elemento a [0] a la lista
a.append(a[0])
Y luego excluir el primer elemento
a[1:]
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.