Risposte:
Sì, l'ordine degli elementi in un elenco Python è persistente.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lste def fn_2(): print(fn_1())l'ordine sarà sempre lo stesso indipendentemente da quante volte o dove mai uso fn_1 ()?
In breve, sì, l'ordine è conservato. A lungo:
In generale, le seguenti definizioni si applicheranno sempre agli oggetti come gli elenchi:
Un elenco è una raccolta di elementi che può contenere elementi duplicati e ha un ordine definito che generalmente non cambia se non esplicitamente fatto per farlo. gli stack e le code sono entrambi tipi di elenchi che forniscono comportamenti specifici (spesso limitati) per l'aggiunta e la rimozione di elementi (gli stack sono LIFO, le code sono FIFO). Gli elenchi sono rappresentazioni pratiche di elenchi di cose. Una stringa può essere pensata come un elenco di caratteri, poiché l'ordine è importante ( "abc" != "bca") e i duplicati nel contenuto della stringa sono certamente consentiti ( "aaa"possono esistere e != "a").
Un set è una raccolta di elementi che non può contenere duplicati e ha un ordine non definito che può o non può cambiare nel tempo. Gli insiemi non rappresentano elenchi di cose tanto quanto descrivono l' estensione di una certa selezione di cose. La struttura interna dell'insieme, il modo in cui i suoi elementi sono memorizzati l'uno rispetto all'altro, di solito non ha lo scopo di trasmettere informazioni utili. In alcune implementazioni, i set sono sempre ordinati internamente; in altri l'ordinamento è semplicemente indefinito (di solito dipende da una funzione hash).
Raccolta è un termine generico che si riferisce a qualsiasi oggetto utilizzato per memorizzare un numero (di solito variabile) di altri oggetti. Sia gli elenchi che i set sono un tipo di raccolta. Le tuple e le matrici normalmente non sono considerate raccolte. Alcune lingue considerano anche le mappe (contenitori che descrivono le associazioni tra oggetti diversi) come un tipo di raccolta.
Questo schema di denominazione è valido per tutti i linguaggi di programmazione che conosco, compresi Python, C ++, Java, C # e Lisp (in cui gli elenchi che non mantengono il loro ordine sarebbero particolarmente catastrofici). Se qualcuno è a conoscenza di casi in cui non è così, per favore basta dirlo e io modificherò la mia risposta. Notare che implementazioni specifiche possono usare altri nomi per questi oggetti, come vector in C ++ e flex in ALGOL 68 (entrambi gli elenchi; flex è tecnicamente solo un array ridimensionabile).
Se nel tuo caso è rimasta confusione a causa delle specifiche di come funziona il +segno qui, sappi solo che l'ordine è importante per gli elenchi e, a meno che non ci siano ottime ragioni per credere, altrimenti puoi sempre presumere che le operazioni dell'elenco mantengano l'ordine . In questo caso, il +segno si comporta in modo molto simile alle stringhe (che in realtà sono solo elenchi di caratteri): prende il contenuto di un elenco e lo posiziona dietro il contenuto di un altro.
Se abbiamo
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Poi
list1 + list2
Equivale a
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
Che valuta
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Molto simile
"abdcde" + "fghijk"
produce
"abdcdefghijk"
Stai confondendo 'set' ed 'elenchi'. Un set non garantisce l'ordine, ma gli elenchi lo fanno.
Imposta vengono dichiarate utilizzando parentesi graffe: {}. Al contrario, le liste vengono dichiarate utilizzando parentesi quadre: [].
mySet = {a, b, c, c}
Non garantisce l'ordine, ma l'elenco fa:
myList = [a, b, c]
Suppongo che una cosa che potrebbe interessarti sia se le voci potrebbero cambiare o meno, in modo che il 2 diventi un numero diverso, per esempio. Qui puoi tranquillizzare la tua mente, perché in Python gli interi sono immutabili , il che significa che non possono cambiare dopo che sono stati creati.
Tuttavia, non tutto in Python è immutabile. Ad esempio, gli elenchi sono modificabili --- possono cambiare dopo essere stati creati. Ad esempio, se avessi un elenco di elenchi
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Qui, ho modificato la prima voce di a(l'ho aggiunta 7). Si potrebbe immaginare di mescolare cose in giro e ottenere cose inaspettate qui se non si sta attenti (e in effetti, questo accade a tutti quando iniziano a programmare in Python in un modo o nell'altro; basta cercare su questo sito "modificando un elenco mentre si scorre in loop "per vedere dozzine di esempi).
E 'anche la pena sottolineare che x = x + [a]e x.append(a)non sono la stessa cosa. Il secondo muta xe il primo crea un nuovo elenco e lo assegna a x. Per vedere la differenza, prova a impostare y = xprima di aggiungere qualsiasi cosa xe provare ognuna e guarda la differenza che fanno i due y.
aList = [1,2,3]
i = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
una lista
[2]
La morale è quando si modifica un elenco in un ciclo guidato dall'elenco, si procede in due passaggi:
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]