Se eu tiver o seguinte código Python
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
Vai x
ser garantida como sempre [1,2,3]
, ou são outros ordenamentos dos elementos intercalares possível?
Sim, a ordem dos elementos em uma lista python é persistente.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
edef fn_2(): print(fn_1())
o pedido será o mesmo SEMPRE, independentemente de quantas vezes ou onde eu sempre use fn_1 ()?Em suma, sim, a ordem é preservada. Em muito tempo:
Em geral, as seguintes definições sempre se aplicam a objetos como listas:
Uma lista é uma coleção de elementos que podem conter elementos duplicados e tem uma ordem definida que geralmente não muda, a menos que seja explicitamente solicitado. pilhas e filas são os dois tipos de listas que fornecem um comportamento específico (geralmente limitado) para adicionar e remover elementos (pilhas sendo LIFO, filas sendo FIFO). Listas são representações práticas de, bem, listas de coisas. Uma string pode ser vista como uma lista de caracteres, pois a ordem é importante (
"abc" != "bca"
) e duplicatas no conteúdo da string são certamente permitidas ("aaa"
podem existir e!= "a"
).Um conjunto é uma coleção de elementos que não podem conter duplicatas e tem uma ordem não definida que pode ou não mudar ao longo do tempo. Os conjuntos não representam tanto listas de coisas quanto descrevem a extensão de uma certa seleção de coisas. A estrutura interna do conjunto, como seus elementos são armazenados um em relação ao outro, geralmente não se destina a transmitir informações úteis. Em algumas implementações, os conjuntos são sempre classificados internamente; em outros, a ordem é simplesmente indefinida (geralmente dependendo de uma função de hash).
Coleção é um termo genérico que se refere a qualquer objeto usado para armazenar um número (geralmente variável) de outros objetos. As listas e os conjuntos são um tipo de coleção. Tuplas e matrizes normalmente não são consideradas coleções. Algumas linguagens consideram mapas (contêineres que descrevem associações entre objetos diferentes) também um tipo de coleção.
Esse esquema de nomenclatura é válido para todas as linguagens de programação que eu conheço, incluindo Python, C ++, Java, C # e Lisp (nas quais as listas que não mantêm sua ordem seriam particularmente catastróficas). Se alguém souber de algum onde esse não seja o caso, diga-o e editarei minha resposta. Observe que implementações específicas podem usar outros nomes para esses objetos, como vetor em C ++ e flex no ALGOL 68 (ambas as listas; flex é tecnicamente apenas uma matriz redimensionável).
Se houver alguma confusão no seu caso devido às especificidades de como o
+
sinal funciona aqui, saiba que a ordem é importante para as listas e, a menos que haja muito boas razões para acreditar, você pode sempre assumir com segurança que as operações da lista preservam a ordem . Nesse caso, o+
sinal se comporta da mesma maneira que para as strings (que na verdade são apenas listas de caracteres): pega o conteúdo de uma lista e o coloca atrás do conteúdo de outro.Se tiver-mos
Então
É o mesmo que
O que avalia como
Muito parecido
Produz
fonte
Você está confundindo 'conjuntos' e 'listas'. Um conjunto não garante ordem, mas as listas sim.
Sets são declaradas usando chaves:
{}
. Em contraste, as listas são declaradas usando colchetes:[]
.Não garante a ordem, mas a lista:
fonte
Suponho que uma coisa que possa lhe interessar é se as entradas podem ou não mudar, para que o 2 se torne um número diferente, por exemplo. Você pode colocar sua mente à vontade aqui, porque no Python, os números inteiros são imutáveis , o que significa que eles não podem mudar depois de serem criados.
Nem tudo no Python é imutável, no entanto. Por exemplo, as listas são mutáveis - elas podem mudar após serem criadas. Por exemplo, se você tivesse uma lista de listas
Aqui, mudei a primeira entrada de
a
(adicionei7
a ela). Pode-se imaginar embaralhar coisas e obter coisas inesperadas aqui, se você não tomar cuidado (e, de fato, isso acontece com todo mundo quando eles começam a programar no Python de uma maneira ou de outra; basta procurar neste site "modificando uma lista enquanto percorre "para ver dezenas de exemplos).Também vale ressaltar isso
x = x + [a]
ex.append(a)
não é a mesma coisa. O segundo mudax
e o primeiro cria uma nova lista e a atribuix
. Para ver a diferença, tente definiry = x
antes de adicionar qualquer coisax
e tentar cada uma delas e observe a diferença que as duas fazemy
.fonte
aList = [1,2,3]
i = 0
uma lista
[2]
A moral é que, ao modificar uma lista em um loop conduzido pela lista, é preciso dois passos:
fonte
Sim, listas e tuplas são sempre ordenadas, enquanto os dicionários não são
fonte