Respostas:
Sim, a ordem dos elementos em uma lista python é persistente.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
e def 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
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Então
list1 + list2
É o mesmo que
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
O que avalia como
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Muito parecido
"abdcde" + "fghijk"
Produz
"abdcdefghijk"
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: []
.
mySet = {a, b, c, c}
Não garante a ordem, mas a lista:
myList = [a, b, c]
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
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Aqui, mudei a primeira entrada de a
(adicionei 7
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]
e x.append(a)
não é a mesma coisa. O segundo muda x
e o primeiro cria uma nova lista e a atribui x
. Para ver a diferença, tente definir y = x
antes de adicionar qualquer coisa x
e tentar cada uma delas e observe a diferença que as duas fazem y
.
aList = [1,2,3]
i = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
uma lista
[2]
A moral é que, ao modificar uma lista em um loop conduzido pela lista, é preciso dois passos:
aList=[1,2,3]
i=0
for item in aList:
if i<2:
aList[i]="del"
i+=1
aList
['del', 'del', 3]
for i in range(2):
del aList[0]
aList
[3]
Sim, listas e tuplas são sempre ordenadas, enquanto os dicionários não são