Si tengo el siguiente código de Python
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
¿ x
Se garantizará que siempre sea así [1,2,3]
, o son posibles otros ordenamientos de los elementos provisionales?
Sí, el orden de los elementos en una lista de Python es persistente.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
, ydef fn_2(): print(fn_1())
Si la orden será siempre igual, independientemente de cuántas veces o donde quiera que utilizo fn_1 ()?En resumen, sí, el orden se conserva. En mucho tiempo:
En general, las siguientes definiciones siempre se aplicarán a objetos como listas:
Una lista es una colección de elementos que pueden contener elementos duplicados y tiene un orden definido que generalmente no cambia a menos que se haga explícitamente. las pilas y las colas son dos tipos de listas que proporcionan un comportamiento específico (a menudo limitado) para agregar y eliminar elementos (las pilas son LIFO, las colas son FIFO). Las listas son representaciones prácticas de, bueno, listas de cosas. Una cadena puede considerarse como una lista de caracteres, ya que el orden es importante (
"abc" != "bca"
) y los duplicados en el contenido de la cadena son ciertamente permitidos ("aaa"
pueden existir y!= "a"
).Un conjunto es una colección de elementos que no pueden contener duplicados y tiene un orden no definido que puede o no cambiar con el tiempo. Los conjuntos no representan listas de cosas tanto como describen el alcance de una determinada selección de cosas. La estructura interna del conjunto, cómo se almacenan sus elementos uno con respecto al otro, generalmente no pretende transmitir información útil. En algunas implementaciones, los conjuntos siempre se ordenan internamente; en otros, el orden es simplemente indefinido (generalmente depende de una función hash).
Colección es un término genérico que se refiere a cualquier objeto utilizado para almacenar un número (generalmente variable) de otros objetos. Tanto las listas como los conjuntos son un tipo de colección. Tuplas y matrices normalmente no se consideran colecciones. Algunos idiomas consideran que los mapas (contenedores que describen asociaciones entre diferentes objetos) también son un tipo de colección.
Este esquema de nombres es válido para todos los lenguajes de programación que conozco, incluidos Python, C ++, Java, C # y Lisp (en el que las listas que no mantienen su orden serían particularmente catastróficas). Si alguien sabe de dónde no es este el caso, solo dígalo y editaré mi respuesta. Tenga en cuenta que las implementaciones específicas pueden usar otros nombres para estos objetos, como vector en C ++ y flex en ALGOL 68 (ambas listas; flex es técnicamente solo una matriz redimensionable).
Si queda alguna confusión en su caso debido a los detalles de cómo funciona el
+
letrero aquí, solo sepa que el orden es importante para las listas y, a menos que haya una buena razón para creer lo contrario, puede suponer que las operaciones de la lista preservan el orden . En este caso, el+
signo se comporta de manera muy similar a las cadenas (que en realidad son solo listas de caracteres de todos modos): toma el contenido de una lista y la coloca detrás del contenido de otra.Si tenemos
Luego
Es lo mismo que
Que se evalúa como
Muy parecido
Produce
fuente
Estás confundiendo 'conjuntos' y 'listas'. Un conjunto no garantiza el orden, pero las listas sí.
Los conjuntos se declaran usando llaves:
{}
. Por el contrario, las listas se declaran utilizando corchetes:[]
.No garantiza el orden, pero la lista sí:
fuente
Supongo que una cosa que puede preocuparte es si las entradas podrían cambiar o no, de modo que el 2 se convierta en un número diferente, por ejemplo. Puede tranquilizarse aquí, porque en Python, los enteros son inmutables , lo que significa que no pueden cambiar una vez creados.
Sin embargo, no todo en Python es inmutable. Por ejemplo, las listas son mutables, pueden cambiar después de ser creadas. Entonces, por ejemplo, si tuviera una lista de listas
Aquí, cambié la primera entrada de
a
(agregué7
). Uno podría imaginarse barajando las cosas y obteniendo cosas inesperadas aquí si no tiene cuidado (y, de hecho, esto le sucede a todos cuando comienzan a programar en Python de una forma u otra; solo busque en este sitio "modificar una lista mientras recorre el bucle "para ver docenas de ejemplos).También vale la pena señalar eso
x = x + [a]
yx.append(a)
no son lo mismo. El segundo mutax
y el primero crea una nueva lista y se la asignax
. Para ver la diferencia, intente configurary = x
antes de agregar algox
y probar cada uno, y observe la diferencia que hacen los dosy
.fuente
aList = [1,2,3]
i = 0
una lista
[2]
La moraleja es que al modificar una lista en un bucle conducido por la lista, se toman dos pasos:
fuente
Sí, las listas y las tuplas siempre se ordenan mientras que los diccionarios no
fuente