Odpowiedzi:
Tak, kolejność elementów na liście python jest trwała.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lsti def fn_2(): print(fn_1())czy kolejność będzie ZAWSZE bez względu na to, ile razy lub gdziekolwiek użyję fn_1 ()?
Krótko mówiąc, tak, kolejność jest zachowana. W długim:
Zasadniczo następujące definicje zawsze będą miały zastosowanie do obiektów takich jak listy:
Lista to zbiór elementów, które mogą zawierać zduplikowanych elementów i ma określony porządek, że na ogół nie zmieni, chyba że wyraźnie się, aby to zrobić. stosy i kolejki to oba typy list, które zapewniają określone (często ograniczone) zachowanie podczas dodawania i usuwania elementów (stosy to LIFO, kolejki to FIFO). Listy są praktycznymi reprezentacjami, no cóż, list rzeczy. Ciąg może być traktowany jako lista znaków, ponieważ kolejność jest ważna ( "abc" != "bca"), a duplikaty w treści ciągu są z pewnością dozwolone ( "aaa"mogą istnieć i != "a").
Zestaw to zbiór elementów, które nie mogą zawierać duplikaty i ma zakaz określony porządek, które mogą lub nie mogą zmieniać się w czasie. Zestawy nie reprezentują list rzeczy, tyle że opisują zakres pewnego wyboru rzeczy. Wewnętrzna struktura zestawu, w jaki sposób jego elementy są przechowywane względem siebie, zwykle nie ma na celu przekazywania użytecznych informacji. W niektórych implementacjach zestawy są zawsze sortowane wewnętrznie; w innych kolejność jest po prostu niezdefiniowana (zwykle w zależności od funkcji skrótu).
Kolekcja to ogólny termin odnoszący się do dowolnego obiektu używanego do przechowywania (zwykle zmiennej) liczby innych obiektów. Zarówno listy, jak i zestawy są rodzajem kolekcji. Krotki i tablice zwykle nie są uważane za kolekcje. Niektóre języki uznają również mapy (kontenery opisujące powiązania między różnymi obiektami) za rodzaj kolekcji.
Ten schemat nazewnictwa sprawdza się we wszystkich znanych mi językach programowania, w tym w Pythonie, C ++, Javie, C # i Lisp (w których listy nieprzestrzegające ich kolejności byłyby szczególnie katastrofalne). Jeśli ktoś wie o czymkolwiek, co nie jest prawdą, proszę to powiedzieć, a ja zredaguję moją odpowiedź. Zauważ, że określone implementacje mogą używać innych nazw dla tych obiektów, takich jak wektor w C ++ i flex w ALGOL 68 (obie listy; flex jest technicznie tylko zmienną tablicą).
Jeśli w twoim przypadku pozostało jakieś zamieszanie związane ze specyfiką działania +znaku, wiedz, że kolejność jest ważna dla list i chyba że istnieje bardzo dobry powód, by wierzyć inaczej, możesz prawie zawsze bezpiecznie założyć, że operacje na listach zachowują porządek . W tym przypadku +znak zachowuje się bardzo podobnie do łańcuchów (które tak naprawdę są tylko listami znaków): pobiera zawartość listy i umieszcza ją za treścią innego.
Jeśli mamy
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Następnie
list1 + list2
Jest taki sam jak
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
Który ocenia na
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Podobnie jak
"abdcde" + "fghijk"
Produkuje
"abdcdefghijk"
Mylisz „zestawy” i „listy”. Zestaw nie gwarantuje kolejności, ale listy tak.
Zestawy są deklarowane przy użyciu nawiasów klamrowych: {}. W przeciwieństwie do tego, listy są uznane za pomocą nawiasów kwadratowych: [].
mySet = {a, b, c, c}
Nie gwarantuje zamówienia, ale lista:
myList = [a, b, c]
Przypuszczam, że jedną z rzeczy, które mogą cię dotyczyć, jest to, czy wpisy mogą się zmienić, tak że na przykład 2 stanie się inną liczbą. Tutaj możesz się uspokoić, ponieważ w Pythonie liczby całkowite są niezmienne , co oznacza, że nie mogą się zmienić po ich utworzeniu.
Jednak nie wszystko w Pythonie jest niezmienne. Na przykład listy można modyfikować --- można je zmieniać po utworzeniu. Na przykład, jeśli masz listę list
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Tutaj zmieniłem pierwszy wpis a(dodałem 7do niego). Można sobie wyobrazić tasowanie rzeczy i uzyskiwanie nieoczekiwanych rzeczy, jeśli nie jesteś ostrożny (i rzeczywiście dzieje się tak ze wszystkimi, gdy zaczynają programować w Pythonie w taki czy inny sposób; po prostu wyszukaj na tej stronie „modyfikowanie listy podczas przeglądania w pętli” to „, aby zobaczyć dziesiątki przykładów).
Warto również na to zwrócić uwagę x = x + [a]i x.append(a)to nie to samo. Drugi mutuje x, a pierwszy tworzy nową listę i przypisuje ją x. Aby zobaczyć różnicę, spróbuj ustawić y = xprzed dodaniem czegokolwiek xi wypróbowaniem każdego z nich, i spójrz na różnicę między nimi y.
aList = [1,2,3]
i = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
aList
[2]
Morał polega na tym, że modyfikując listę w pętli sterowanej przez listę, wykonuje dwa kroki:
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]