Szybki kontakt




Lista to uporządkowana kolekcja elementów. Listy nazywane są też tablicami. W języku angielskim dla określenia listy używa się słów: array, vector, matrix, list.

Listy tworzy się za pomocą nawiasów kwadratowych, oddzielając elementy przecinkami np. [a, b, c]

Właściwości listy:

  • reprezentuje wszystkie możliwości krotki, ale jest mutowalna – można dodawać lub usuwać z niej elementy
  • związana jest z obsługą sekwencji informacji
  • może być pusta lub zawierać tylko jeden element
  • może zawierać inne listy
  • może przechowywać różne typy danych np. łańcuchy znaków, krotki, listy, słowniki, funkcje, obiekty plików i dowolne rodzaje liczb
  • możliwe jest odnoszenie się do podzbiorów, czy wycinków listy (ang. slice)

W Pythonie listy są pisane w nawiasach kwadratowych. Aby utworzyć listę napiszemy następujący kod:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza)
['miecz', 'zbroja', 'tarcza']
>>> 

Dostęp do elementów listy można uzyskać, odwołując się do numeru indeksu. Jako indeksów możemy używać dodatnich i ujemnych liczb całkowitych. Liczby dodatnie oznaczają dostęp do początkowych elementów listy od zera do ostatniego elementu. Liczby ujemne oznaczają dostęp do końcowych elementów listy: -1 do pierwszego od końca, -2 do drugiego, i tak dalej. Można zatem odwołać się do wszystkich elementów listy numerując je od początku lub od końca.

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza [1])
zbroja
>>> 

W Pythonie listy są indeksowane od zera. Dlatego powyższy kod zwraca słowo „zbroja”.

Drugi przykład:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza [-1])
tarcza
>>> 

Możemy odczytywać wybiórczo zawartość poszczególnych elementów listy, tak jak w powyższych przykładach, lub całe ciągi elementów. Aby odczytać ciąg elementów na liście, należy podać numer indeksu, od którego mają zostać odczytane elementy z listy oraz dwukropek. Wówczas odczytane zostaną wszystkie elementy, zaczynając od wskazanego indeksu aż do końca listy:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> wyposażenie[1:]
['zbroja', 'tarcza']
>>> 

Możliwe jest też odczytanie co któregoś elementu listy. W poniższym przykładzie odczytujemy co drugi element:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
>>> wyposażenie_rycerza[::2]
['miecz', 'tarcza', 'koń']
>>> 

Listy są sekwencjami zmiennymi, można więc je modyfikować. Aby zmienić wartość określonego elementu na liście, należy odnieść się do jego indeksu:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> wyposażenie_rycerza[1] = "hełm"
>>> print(wyposażenie_rycerza)
['miecz', 'hełm', 'tarcza']
>>> 

Można też usuwać elementy ze środka listy za pomocą słowa kluczowego del:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
>>> del wyposażenie_rycerza[2]
>>> wyposażenie_rycerza
['miecz', 'zbroja', 'hełm', 'koń']
>>> 

Za pomocą słowa kluczowego del można też całkowicie usunąć listę:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
>>> del wyposażenie_rycerza

Zawartość list można sprawdzać. Aby sprawdzić, czy określona wartość znajduje się na liście, używamy operatora in:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
>>> "łuk" in wyposażenie_rycerza
False
>>> "zbroja" in wyposażenie_rycerza
True
>>> 

W wyniku otrzymamy wartość logiczną „TRUE” lub „FALSE”.

Drugi przykład:

wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
if "miecz" in wyposażenie_rycerza:
  print("Tak, 'miecz' jest na liście wyposażenia")

Elementy listy można przeglądać za pomocą pętli for:

wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
for x in wyposażenie_rycerza:
    print(x)

Listy można porównywać. Porównywanie list odbywa się na zasadzie porównywania poszczególnych elementów:

  • listy są równe, jeżeli elementy obu list są sobie równe
  • listy są nierówne, jeżeli różnią się choć jednym elementem
  • pierwsza lista jest większa od drugiej, jeżeli pierwszy element pierwszej listy jest większy od pierwszego elementu drugiej listy
  • element nieistniejący jest zawsze mniejszy od każdego innego elementu

Listy wielopoziomowe
W przypadku list wielopoziomowych, które zawierają inne listy możliwy jest dostęp do poszczególnych elementów list podrzędnych poprzez użycie dwóch indeksów. Jako pierwszy podajemy zawsze indeks listy wyższego rzędu.

>>> lista = [[1,2,3,4,5],["tarcza","zbroja","miecz","hełm"]]
>>> lista[1][0];lista[0][2]
'tarcza'
3
>>> 

Dostępne metody listy:

>>> dir([])
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__',
'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend',
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> 

Przykłady wykorzystania niektórych metod:

  • metoda len() – określenie, ile elementów ma lista
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
    >>> len(wyposażenie_rycerza)
    5
    >>> 
    
  • metoda append() – dodanie elementu na końcu listy
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.append("dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'tarcza', 'hełm', 'koń', 'dzida']
    >>> 
    
  • metoda insert() – dodanie elementu o określonym indeksie
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.insert(2,"dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'dzida', 'tarcza', 'hełm', 'koń']
    >>> 
    
  • metoda remove() – usunięcie z listy określonego elementu
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.remove("dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'tarcza', 'hełm', 'koń']
    >>>
    
  • metoda pop() – usunięcie określonego indeksu lub ostatniego elementu, jeśli indeks nie został określony:
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.pop(3)
    'tarcza'
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'dzida', 'hełm', 'koń']
    >>> 
    

    Drugi przykład – nie podajemy indeksu:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.pop()
    'koń'
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'dzida', 'tarcza', 'hełm']
    >>> 
    
  • metoda clear() – wyczyszczenie listy:
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> wyposażenie_rycerza.clear()
    >>> print(wyposażenie_rycerza)
    []
    >>> 
    
  • metoda copy() – skopiowanie listy:
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> nowe_wyposażenie = wyposażenie_rycerza.copy()
    >>> print(nowe_wyposażenie)
    ['miecz', 'zbroja', 'dzida', 'tarcza', 'hełm', 'koń']
    >>> 
    
  • metoda list() – skopiowanie listy:
    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida", "tarcza","hełm","koń"]
    >>> nowe_wyposażenie = list(wyposażenie_rycerza)
    >>> print(nowe_wyposażenie)
    ['miecz', 'zbroja', 'dzida', 'tarcza', 'hełm', 'koń']
    >>> 
    

Informacje na temat krotek znajdziesz w artykule Python krotka

Dodaj komentarz

Twój adres email nie zostanie opublikowany.