Przydatne metody: append, clear, copy, count, extend, index, insert, pop, remove, reverse, sort.
Listy są bardzo elastycznym narzędziem w Pythonie, które potrafią przechowywać wiele elementów różnych typów. Są podobne do tablic w C++, z tą różnicą, że można w nich przechowywać dane różnego typu. Część elementów może być liczbami, inna część ciągami znaków, a jeszcze inna np. listami. Poszczególne elementy listy możemy modyfikować.
Pustą listę możemy stworzyć w następujący sposób:
nazwa_listy = []
Aby utworzyć ustaloną liczbę elementów listy oraz przypisać do każdego elementu pewną wartość, możemy użyć operatora "*" (gwiazdka):
lista = 10*[0] #tworzymy dziesięć komórek listy wypełniając je wartością zero
print(lista)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Aby dodać kolejne elementy użyjemy metody append(element) np.
x = [] # tworzymy pustą listę
x.append(3) # dodaj liczbę 3 jako pierwszy element
x.append(4) # dodaj liczbę 4 jako drugi element
x.append("ala ma kota") # dodaj napis "ala ma kota" jako trzeci element
print(x)
[3, 4, 'ala ma kota']
Wyobraź sobie, że wrzucasz poszczególne elementy listy do szufladek. Pierwsza szufladka ma numer 0, druga ma numer 1, trzecia 2 itd., czyli podobnie jak w wielu innych językach programowania. Aby odwołać się do któregoś z elementów, musisz podać nazwę listy a następnie nawias kwadratowy, a w nim numer szufladki (indeks), do której chcesz się odwołać. Możesz odwoływać się do elementów listy poprzez kolejne ujemne numery szufladek. Żeby wypisać ostatni element listy, możesz odwołać się za pomocą numeru -1, do przedostatniego elementu odwołasz się za pomocą indeksu -2 itd.
x = [2, 4, "ala ma kota", 3.14]
print(x[0]) # wypisanie pierwszego elementu listy (2)
print(x[3]) # wypisanie czwartego elementu listy (3.14)
print(x[-1]) # wypisanie ostatniego elementu listy (3.14)
# print(x[5]) # operacja niedozwolona, ponieważ nie istnieje szufladka z numerem 5
2
3.14
3.14
Listy możemy połączyć za pomocą operatora "+".
x = [1, 2, 3]
y = [3, 4, 5]
x = x + y # lub x += y
print(x)
[1, 2, 3, 3, 4, 5]
Listy możemy powielić za pomocą operatora "*".
x = [1, 2, 3]
x = x * 5 # lub x *= y
print(x)
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
Jeśli chcemy wyłuskać n (n > 0) początkowych elementów listy, musimy użyć konstrukcji:
lista[:n]
Np.:
x = [1, 2, 3, 4, 5]
print(x[:3]) # wyłuskanie trzech początkowych elementów listy
[1, 2, 3]
Można użyć także konstrukcji:
lista[:-n] # dla n > 0
W tym przypadku zostaną wyłuskane początkowe elementy bez n końcowych.
x = [1, 2, 3, 4, 5]
print(x[:-3]) # wyłuskanie trzech początkowych elementów listy
[1, 2]
Dodanie elementu na koniec listy:
x = [1, 2, 3, 4, 5]
x.append(111)
print(x)
[1, 2, 3, 4, 5, 111]
Wyczyszczenie zawartości listy:
x = [1, 2, 3, 4, 5]
print(x)
x.clear()
print(x)
[1, 2, 3, 4, 5]
[]
Przeanalizujmy kod:
x = [1, 2, 3, 4, 5]
y = x
x[0] = 111
print(y)
[111, 2, 3, 4, 5]
W drugim wierszu kodu wykonaliśmy przypisanie y = x co spowodowało, że obiekty x i y wskazują na tą samą listę z danymi. Jeśli chcemy, aby zmienna y wskazywała na kopię listy zmiennej x, musimy użyć metody copy():
x = [1, 2, 3, 4, 5]
y = x.copy()
x[0] = 111
print(y)
[1, 2, 3, 4, 5]
Metoda copy() zwraca kopię listy obiektu x.
Metoda zwraca liczbę wystąpień danego elementu w liście.
x = [1, 4, 4, 1, 4]
print(x.count(4))
3
Metoda dodaje na koniec listy elementy innej listy.
x = [1, 4, 4, 1, 4]
y = ["a", "b"]
x.extend(y)
print(x)
[1, 4, 4, 1, 4, 'a', 'b']
Metoda zwraca indeks (numer szufladki) pierwszego wystąpienia elementu w liście. Pamiętaj, że elementy indeksujemy począwszy od liczby zero.
x = [1, 4, 4, 1, 4, 5, 6, 6]
print(x.index(4))
print(x.index(5))
1
5
Metoda index może posiadać jeszcze dwa opcjonalne argumenty: indeks_początkowy oraz index_końcowy ograniczające zakres przeszukiwania listy:
x = [1, 4, 4, 1, 4, 5, 6, 6]
print(x.index(4, 4)) # przeszukiwanie od 4 indeksu listy
print(x.index(1, 2, 5)) # przeszukujemy listę od 2 do 5 indeksu listy
4
3
Metoda wstawia nowy element listy w miejsce o inseksie indeks, przesuwając pozostałe elementy w prawo.
x = [1, 4, 4, 1, 4, 5, 6, 6]
print(x)
x.insert(2, "a")
print(x)
[1, 4, 4, 1, 4, 5, 6, 6]
[1, 4, 'a', 4, 1, 4, 5, 6, 6]
W przypadku, gdy dany indeks jest większy niż indeks ostatniego elementu, to element zostanie wstawiony na koniec listy.
Metoda usuwa element stojący na pozycji indeks, jednocześnie zwracając go. Jeśli użyjemy metodę pop() bez argumentu, to usunięty i zwrócony zostanie ostatni element listy.
x = [1, 4, 4, 1, 4, 5, 6, 6]
print(x.pop())
print(x)
print(x.pop(4))
print(x)
6
[1, 4, 4, 1, 4, 5, 6]
4
[1, 4, 4, 1, 5, 6]
Metoda usuwa pierwszy pasujący element z listy.
x = [1, 4, 4, 1, 4, 5, 6, 6]
print(x)
x.remove(4)
print(x)
[1, 4, 4, 1, 4, 5, 6, 6]
[1, 4, 1, 4, 5, 6, 6]
Metoda odwraca kolejność elementów w liście.
x = [1, 2, 3, 4]
print(x)
x.reverse()
print(x)
[1, 2, 3, 4]
[4, 3, 2, 1]
Metoda porządkuje elementy listy.
Porządkowanie niemalejąco:
x = [2, 3, 1, 6, 0, 2]
print(x)
x.sort()
print(x)
[2, 3, 1, 6, 0, 2]
[0, 1, 2, 2, 3, 6]
Porządkowanie nierosnąco:
x = [2, 3, 1, 6, 0, 2]
print(x)
x.sort(reverse = True)
print(x)
[2, 3, 1, 6, 0, 2]
[6, 3, 2, 2, 1, 0]