RVCLNA5CE6DTX
Grafika dekoracyjna przedstawiająca filiżankę z kawą oraz liczby na niebieskim tle.

I_P_PY_W13_M08 Tablice jednowymiarowe

Źródło: Roman Synkevych, domena publiczna.

Tablica jednowymiarowa w języku Python

W języku Python struktura danych (tablica jednowymiarowa) implementowana jest najczęściej za pomocą listy.

Oto deklaracja i zarazem definicja pustej tablicy jednowymiarowej w języku Python:

Linia 1. przykladowa podkreślnik tablica znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.

Definiowanie tablicy zaczynamy od nadania nazwy. Nie musimy określać, jakiego typu dane będzie przechowywać.

Do nazwy przykladowa_tablica będziemy się odwoływać, aby odczytać zawartość tablicy, wpisać konkretną liczbę w określonym miejscu albo w celu wykonania operacji na wybranym elemencie.

Nie musimy w tym miejscu deklarować rozmiaru tablicy.

Przykład 1

Dana jest tablica jednowymiarowa liczby. Jest to pusta tablica.

Linia 1. liczby znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.

Wypełnimy ją danymi, wykorzystując pętlę for. Wypełnimy ją kolejnymi liczbami naturalnymi z zakresu <a, b).

Zmienna liczba przechowuje kolejne wartości z zakresu <a, b).

Linia 1. liczby znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. a znak równości 1. Linia 3. b znak równości 10. Linia 5. for liczba in range otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek. Linia 6. liczby kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 8. print otwórz nawias okrągły liczby zamknij nawias okrągły.
Przykład 2

W języku Python tablice implementowane są za pomocą listy. Listy od tablic różnią się tym, że mogą zawierać różne typy danych. Zatem poniższa struktura jest listą, ale nie jest tablicą:

Linia 1. lista podkreślnik danych znak równości otwórz nawias kwadratowy 27 przecinek cudzysłów Grzegorz cudzysłów przecinek True przecinek cudzysłów maj cudzysłów przecinek 0 kropka 05 zamknij nawias kwadratowy.

Natomiast poniższa struktura jest tablicą zaimplementowaną za pomocą listy:

Linia 1. tablica podkreślnik danych znak równości otwórz nawias kwadratowy cudzysłów Michał cudzysłów przecinek cudzysłów Grzegorz cudzysłów przecinek cudzysłów Karol cudzysłów przecinek cudzysłów Piotr cudzysłów przecinek cudzysłów Paweł cudzysłów zamknij nawias kwadratowy.

Zmienna tablica_danych składa się z pięciu elementów – do każdego z nich możemy się odwołać, podając indeks, czyli numer określający pozycję elementu.

Przygotujmy kod, który pozwoli wypisać elementy tablicy (element), ich indeks (ind) oraz typ (type()).

Wbudowana funkcja enumerate pozwala przeiterować po tablicy i pobrać zarówno wartość indeksu, jak i elementu znajdującego się pod danym indeksem.

Do wyświetlenia danych użyjemy mechanizmu formatowania f‑string:

Linia 1. for ind przecinek element in enumerate otwórz nawias okrągły tablica podkreślnik danych zamknij nawias okrągły dwukropek. Linia 2. print otwórz nawias okrągły f cudzysłów Element o indeksie otwórz nawias klamrowy ind zamknij nawias klamrowy ma wartość otwórz nawias klamrowy element zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 3. print otwórz nawias okrągły f cudzysłów Jego typ to otwórz nawias klamrowy type otwórz nawias okrągły element zamknij nawias okrągły zamknij nawias klamrowy cudzysłów zamknij nawias okrągły.

Efekt działania programu:

Linia 1. Element o indeksie 0 ma wartość Michał. Linia 2. Jego typ to otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny. Linia 3. Element o indeksie 1 ma wartość Grzegorz. Linia 4. Jego typ to otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny. Linia 5. Element o indeksie 2 ma wartość Karol. Linia 6. Jego typ to otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny. Linia 7. Element o indeksie 3 ma wartość Piotr. Linia 8. Jego typ to otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny. Linia 9. Element o indeksie 4 ma wartość Paweł. Linia 10. Jego typ to otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny.
Ważne!
  • Pozycja obiektu w ciągu elementów pozostaje niezmienna, nie możemy przypisać elementowi tablicy innego indeksu.

  • Każdy element tablicy musi być tego samego typu.

  • W języku Python indeksowanie elementów tablicy rozpoczyna się od liczby 0, zatem zapis tablica_danych[3] wskazuje czwarty element.

  • Oprócz tablic implementowanych za pomocą list język Python oferuje także krotki (typ tuple), które zachowują się podobnie do list (z pewnymi ograniczeniami).

Inna nieomawiana metoda listy, która może mieć zastosowanie w przypadku tablic to metoda sort():

  • lista.sort() – metoda porządkuje listę niemalejąco;

Przykład 3

Przetestujmy działanie metod: copy, sort, index, count.

Metoda copy():

Linia 1. liczby znak równości otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy. Linia 3. kratka Samo skopiowanie listy nic nie daje przecinek należy przypisać ją do nowej zmiennej. Linia 4. liczby kropka copy otwórz nawias okrągły zamknij nawias okrągły. Linia 6. kratka Kopiujemy zawartość listy i przypisujemy do nowej zmiennej. Linia 7. liczby podkreślnik nowe znak równości liczby kropka copy otwórz nawias okrągły zamknij nawias okrągły. Linia 9. print otwórz nawias okrągły liczby zamknij nawias okrągły. Linia 10. print otwórz nawias okrągły liczby podkreślnik nowe zamknij nawias okrągły. Linia 12. kratka otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy. Linia 13. kratka otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy.

Metoda sort():

Linia 1. liczby znak równości otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy. Linia 3. liczby kropka sort otwórz nawias okrągły zamknij nawias okrągły. Linia 5. print otwórz nawias okrągły liczby zamknij nawias okrągły. Linia 7. kratka otwórz nawias kwadratowy 4 przecinek 5 przecinek 20 przecinek 20 przecinek 23 przecinek 24 przecinek 26 przecinek 27 zamknij nawias kwadratowy.

Metoda index():

Linia 1. liczby znak równości otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy. Linia 3. indeks znak równości liczby kropka index otwórz nawias okrągły 20 zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły indeks zamknij nawias okrągły. Linia 6. kratka 4. Linia 8. kratka Sytuacja przecinek w której wyświetlamy indeks elementu przecinek którego nie ma. Linia 9. indeks znak równości liczby kropka index otwórz nawias okrągły 2024 zamknij nawias okrągły. Linia 10. print otwórz nawias okrągły indeks zamknij nawias okrągły. Linia 12. kratka ERROR wykrzyknik. Linia 13. kratka Traceback otwórz nawias okrągły most recent call last zamknij nawias okrągły dwukropek. Linia 14. kratka File cudzysłów otwórz nawias ostrokątny main kropka py zamknij nawias ostrokątny cudzysłów przecinek line 9 przecinek in otwórz nawias ostrokątny module zamknij nawias ostrokątny. Linia 15. kratka ValueError dwukropek 2024 is not in list.

Metoda count():

Linia 1. liczby znak równości otwórz nawias kwadratowy 26 przecinek 4 przecinek 27 przecinek 5 przecinek 20 przecinek 24 przecinek 20 przecinek 23 zamknij nawias kwadratowy. Linia 3. licznik znak równości liczby kropka count otwórz nawias okrągły 20 zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły licznik zamknij nawias okrągły. Linia 6. kratka 2. Linia 8. kratka Sytuacja przecinek w której obliczamy liczbę wystąpień elementu przecinek którego nie ma. Linia 9. licznik znak równości liczby kropka count otwórz nawias okrągły 2024 zamknij nawias okrągły. Linia 10. print otwórz nawias okrągły licznik zamknij nawias okrągły. Linia 12. kratka 0.
Ważne!

W języku Python listy nie mają z góry ustalonej wielkości. Odwołując się do elementu listy spoza zakresu, otrzymamy błąd.

Już wiesz

Podsumujmy najważniejsze elementy tej sekcji:

  • oprócz list Python oferuje także krotki (typ tuple), które zachowują się podobnie do list, z pewnymi ograniczeniami,

  • w języku Python listy czy krotki nie posiadają z góry ustalonej wielkości,

  • każdy element listy czy krotki może być innego typu,

  • w języku Python indeksowanie rozpoczyna się od zera, zatem zapis lista_danych[3] wskazuje czwarty element.