{"id":1041,"date":"2021-06-16T17:28:00","date_gmt":"2021-06-16T15:28:00","guid":{"rendered":"https:\/\/trzykody.pl\/?page_id=1041"},"modified":"2026-02-19T23:05:48","modified_gmt":"2026-02-19T22:05:48","slug":"tablice","status":"publish","type":"page","link":"https:\/\/trzykody.pl\/index.php\/python\/tablice\/","title":{"rendered":"Tablice"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Tablice w j\u0119zykach programowania s\u0105 sposobem przechowywania wielu warto\u015bci pod jedn\u0105 nazw\u0105. W klasycznych j\u0119zykach niskopoziomowych tablica oznacza zwykle ci\u0105g element\u00f3w tego samego typu, zapisanych w sp\u00f3jnym obszarze pami\u0119ci. W Python sytuacja jest bardziej z\u0142o\u017cona &#8211; poj\u0119cie \u201etablicy\u201d jest potoczne i obejmuje kilka r\u00f3\u017cnych struktur danych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W Python podstawowe \u201etablice\u201d to: listy, krotki i s\u0142owniki. Ka\u017cda z tych struktur ma inn\u0105 semantyk\u0119, inne w\u0142a\u015bciwo\u015bci i inne zastosowania. Wszystkie nale\u017c\u0105 do kategorii Python: struktury danych wbudowanych w j\u0119zyk. W dalszej cz\u0119\u015bci tekstu traktuj\u0119 je jako Tablice, bo pe\u0142ni\u0105 rol\u0119 kolekcji element\u00f3w.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis tre\u015bci<\/h2><nav><ol><li class=\"\"><a href=\"#tablice-python-jako-dynamiczne-kontenery-obiektow-czym-sa-i-jak-sa-reprezentowane-w-pamieci\">Tablice Python jako dynamiczne kontenery obiekt\u00f3w &#8211; czym s\u0105 i jak s\u0105 reprezentowane w pami\u0119ci<\/a><\/li><li class=\"\"><a href=\"#tablice-listy-w-python-jako-dynamiczne-sekwencje-indeksowane-liczbami-calkowitymi\">Tablice &#8211; listy w Python jako dynamiczne sekwencje indeksowane liczbami ca\u0142kowitymi<\/a><ol><li class=\"\"><a href=\"#tworzenie-listy-python-podstawowe-sposoby\">Tworzenie listy Python &#8211; podstawowe sposoby<\/a><\/li><li class=\"\"><a href=\"#dostep-do-elementow\">Dost\u0119p do element\u00f3w<\/a><\/li><li class=\"\"><a href=\"#modyfikacja-elementow\">Modyfikacja element\u00f3w<\/a><\/li><li class=\"\"><a href=\"#odpowiednik-w-c-klasyczna-tablica-statyczna\">Odpowiednik w C &#8211; klasyczna tablica statyczna<\/a><\/li><li class=\"\"><a href=\"#odpowiednik-w-c-std-vector-jako-dynamiczna-tablica\">Odpowiednik w C++ &#8211; std::vector jako dynamiczna tablica<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#tworzenie-tablic-krotek-jako-niemodyfikowalnych-sekwencji-danych\">Tworzenie tablic &#8211; krotek jako niemodyfikowalnych sekwencji danych<\/a><ol><li class=\"\"><a href=\"#tworzenie-krotki\">Tworzenie krotki<\/a><\/li><li class=\"\"><a href=\"#cechy-krotki\">Cechy krotki<\/a><\/li><li class=\"\"><a href=\"#dlaczego-uzywac-krotek\">Dlaczego u\u017cywa\u0107 krotek<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#tworzenie-tablic-slownikow-jako-struktur-klucz-wartosc-opartych-o-funkcje-mieszajaca\">Tworzenie tablic &#8211; s\u0142ownik\u00f3w jako struktur klucz-warto\u015b\u0107 opartych o funkcj\u0119 mieszaj\u0105c\u0105<\/a><ol><li class=\"\"><a href=\"#tworzenie-slownika\">Tworzenie s\u0142ownika<\/a><\/li><li class=\"\"><a href=\"#dostep-do-elementow-1\">Dost\u0119p do element\u00f3w<\/a><\/li><li class=\"\"><a href=\"#wlasciwosci\">W\u0142a\u015bciwo\u015bci<\/a><\/li><li class=\"\"><a href=\"#przyklad-dzialania-funkcji-mieszajacej\">Przyk\u0142ad dzia\u0142ania funkcji mieszaj\u0105cej<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#tablice-operacje-wspolne-dla-list-i-krotek-oraz-ich-znaczenie-w-przetwarzaniu-danych\">Tablice &#8211; operacje wsp\u00f3lne dla list i krotek oraz ich znaczenie w przetwarzaniu danych<\/a><ol><li class=\"\"><a href=\"#tablica-string\">tablica string<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#automatyczne-uzupelnianie-tablic-mechanizmy-generowania-elementow-i-inicjalizacji-zbiorczej\">Automatyczne uzupe\u0142nianie tablic &#8211; mechanizmy generowania element\u00f3w i inicjalizacji zbiorczej<\/a><ol><li class=\"\"><a href=\"#1-list-comprehension\">1. List comprehension<\/a><\/li><li class=\"\"><a href=\"#2-inicjalizacja-powielona\">2. Inicjalizacja powielona<\/a><\/li><li class=\"\"><a href=\"#3-generowanie-slownikow\">3. Generowanie s\u0142ownik\u00f3w<\/a><\/li><li class=\"\"><a href=\"#4-funkcja-enumerate\">4. Funkcja enumerate<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#tablice-python-a-zlozonosc-obliczeniowa-podstawowych-operacji-i-ich-konsekwencje-praktyczne\">Tablice Python a z\u0142o\u017cono\u015b\u0107 obliczeniowa podstawowych operacji i ich konsekwencje praktyczne<\/a><\/li><li class=\"\"><a href=\"#python-lista-komend-i-python-komendy-lista-najczesciej-uzywane-przy-pracy-z-listami\">Python: lista komend i python: komendy lista najcz\u0119\u015bciej u\u017cywane przy pracy z listami<\/a><\/li><li class=\"\"><a href=\"#pulapki-i-czeste-bledy-przy-pracy-z-tablicami-w-python\">Pu\u0142apki i cz\u0119ste b\u0142\u0119dy przy pracy z tablicami w Python<\/a><\/li><li class=\"\"><a href=\"#tablice-znaczenie-struktur-sekwencyjnych-i-asocjacyjnych-w-projektowaniu-algorytmow\">Tablice &#8211; znaczenie struktur sekwencyjnych i asocjacyjnych w projektowaniu algorytm\u00f3w<\/a><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tablice-python-jako-dynamiczne-kontenery-obiektow-czym-sa-i-jak-sa-reprezentowane-w-pamieci\">Tablice Python jako dynamiczne kontenery obiekt\u00f3w &#8211; czym s\u0105 i jak s\u0105 reprezentowane w pami\u0119ci<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W Python nie istnieje klasyczna tablica znana z j\u0119zyka C jako <code>int arr[10]<\/code>. Zamiast tego mamy obiekty dynamiczne. Ka\u017cda Tablica Python (lista, krotka, s\u0142ownik) przechowuje referencje do obiekt\u00f3w, a nie same warto\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To oznacza kilka rzeczy:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Elementy mog\u0105 mie\u0107 r\u00f3\u017cne typy.<\/li>\n\n\n\n<li>Rozmiar mo\u017ce si\u0119 zmienia\u0107 w trakcie dzia\u0142ania programu (dla list i s\u0142ownik\u00f3w).<\/li>\n\n\n\n<li>Operacje nie zawsze s\u0105 sta\u0142oczasowe &#8211; zale\u017cy to od implementacji.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">W uproszczeniu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lista \u2192 dynamiczna tablica referencji.<\/li>\n\n\n\n<li>Krotka \u2192 niemodyfikowalna sekwencja referencji.<\/li>\n\n\n\n<li>S\u0142ownik \u2192 tablica mieszaj\u0105ca (hash table).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W odr\u00f3\u017cnieniu od j\u0119zyka C, Python nie wymaga deklarowania rozmiaru. Zarz\u0105dzanie pami\u0119ci\u0105 jest automatyczne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tablice-listy-w-python-jako-dynamiczne-sekwencje-indeksowane-liczbami-calkowitymi\">Tablice &#8211; listy w Python jako dynamiczne sekwencje indeksowane liczbami ca\u0142kowitymi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lista to najcz\u0119\u015bciej u\u017cywana Tablica Python. Jest:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uporz\u0105dkowana,<\/li>\n\n\n\n<li>indeksowana od 0,<\/li>\n\n\n\n<li>mutowalna (mo\u017cna zmienia\u0107 elementy),<\/li>\n\n\n\n<li>dynamiczna (rozmiar mo\u017ce si\u0119 zmienia\u0107).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tworzenie-listy-python-podstawowe-sposoby\">Tworzenie listy Python &#8211; podstawowe sposoby<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Najprostsza forma:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [1, 2, 3]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pusta lista:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = []<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Z u\u017cyciem konstruktora:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = list()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lista z zakresu:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = list(range(5))<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[0, 1, 2, 3, 4]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dostep-do-elementow\">Dost\u0119p do element\u00f3w<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [10, 20, 30]<br>print(a[0])   # 10<br>print(a[-1])  # 30<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Indeksowanie ujemne liczy od ko\u0144ca.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"modyfikacja-elementow\">Modyfikacja element\u00f3w<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [1, 2, 3]<br>a[1] = 100<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lista zmieni si\u0119 na <code>[1, 100, 3]<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"odpowiednik-w-c-klasyczna-tablica-statyczna\">Odpowiednik w C &#8211; klasyczna tablica statyczna<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;stdio.h&gt;int main() {<br>    int a[3] = {1, 2, 3};<br>    printf(\"%d\\n\", a[1]);<br>    return 0;<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tutaj:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rozmiar jest sta\u0142y,<\/li>\n\n\n\n<li>elementy maj\u0105 ten sam typ,<\/li>\n\n\n\n<li>pami\u0119\u0107 jest ci\u0105g\u0142a.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"odpowiednik-w-c-std-vector-jako-dynamiczna-tablica\">Odpowiednik w C++ &#8211; std::vector jako dynamiczna tablica<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;iostream&gt;<br>#include &lt;vector&gt;int main() {<br>    std::vector&lt;int&gt; a = {1, 2, 3};<br>    a.push_back(4);<br>    std::cout &lt;&lt; a[0] &lt;&lt; std::endl;<br>    return 0;<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>std::vector<\/code> jest bli\u017cszy li\u015bcie Python ni\u017c klasyczna tablica C.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tworzenie-tablic-krotek-jako-niemodyfikowalnych-sekwencji-danych\">Tworzenie tablic &#8211; krotek jako niemodyfikowalnych sekwencji danych<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Krotka (tuple) to struktura podobna do listy, ale niemodyfikowalna.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tworzenie-krotki\">Tworzenie krotki<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">t = (1, 2, 3)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jednoelementowa krotka:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">t = (5,)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bez przecinka Python potraktuje to jako zwyk\u0142\u0105 warto\u015b\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cna te\u017c zapisa\u0107 bez nawias\u00f3w:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">t = 1, 2, 3<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cechy-krotki\">Cechy krotki<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nie mo\u017cna zmieni\u0107 elementu,<\/li>\n\n\n\n<li>nie mo\u017cna doda\u0107 nowego elementu,<\/li>\n\n\n\n<li>mo\u017cna j\u0105 indeksowa\u0107 jak list\u0119.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">t = (10, 20, 30)<br>print(t[1])<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-uzywac-krotek\">Dlaczego u\u017cywa\u0107 krotek<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dane sta\u0142e logicznie (np. wsp\u00f3\u0142rz\u0119dne punktu).<\/li>\n\n\n\n<li>Klucze w s\u0142ownikach.<\/li>\n\n\n\n<li>Optymalizacja &#8211; s\u0105 nieco l\u017cejsze ni\u017c listy.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Wewn\u0119trznie krotka nie musi zarz\u0105dza\u0107 nadmiarow\u0105 przestrzeni\u0105 jak lista, bo nie zmienia rozmiaru.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tworzenie-tablic-slownikow-jako-struktur-klucz-wartosc-opartych-o-funkcje-mieszajaca\">Tworzenie tablic &#8211; s\u0142ownik\u00f3w jako struktur klucz-warto\u015b\u0107 opartych o funkcj\u0119 mieszaj\u0105c\u0105<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">S\u0142ownik w Python to implementacja tablicy haszuj\u0105cej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tworzenie-slownika\">Tworzenie s\u0142ownika<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">d = {\"a\": 1, \"b\": 2}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pusty s\u0142ownik:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">d = {}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Z konstruktora:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">d = dict()<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dostep-do-elementow-1\">Dost\u0119p do element\u00f3w<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">print(d[\"a\"])<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W s\u0142owniku nie u\u017cywa si\u0119 indeks\u00f3w liczbowych, tylko kluczy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"wlasciwosci\">W\u0142a\u015bciwo\u015bci<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>klucze musz\u0105 by\u0107 niemodyfikowalne,<\/li>\n\n\n\n<li>dost\u0119p do elementu jest \u015brednio O(1),<\/li>\n\n\n\n<li>brak gwarancji fizycznego uporz\u0105dkowania (cho\u0107 Python zachowuje kolejno\u015b\u0107 wstawiania).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklad-dzialania-funkcji-mieszajacej\">Przyk\u0142ad dzia\u0142ania funkcji mieszaj\u0105cej<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Klucz \u2192 funkcja hash.<\/li>\n\n\n\n<li>Hash \u2192 indeks w tablicy.<\/li>\n\n\n\n<li>Kolizje rozwi\u0105zywane przez mechanizm wewn\u0119trzny (np. otwarte adresowanie).<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tablice-operacje-wspolne-dla-list-i-krotek-oraz-ich-znaczenie-w-przetwarzaniu-danych\">Tablice &#8211; operacje wsp\u00f3lne dla list i krotek oraz ich znaczenie w przetwarzaniu danych<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sekwencje w Python maj\u0105 wsp\u00f3lne operacje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d\u0142ugo\u015b\u0107: <code>len(a)<\/code><\/li>\n\n\n\n<li>iteracja: for x in a:<br>print(x)<\/li>\n\n\n\n<li>wycinanie (slicing): a[1:3]<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tablica-string\">tablica string<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W Python \u0142a\u0144cuch znak\u00f3w (<code>str<\/code>) dzia\u0142a jak niemodyfikowalna sekwencja znak\u00f3w, czyli jak krotka znak\u00f3w.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">s = \"abc\"<br>print(s[0])<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To r\u00f3wnie\u017c przyk\u0142ad sekwencji indeksowanej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"automatyczne-uzupelnianie-tablic-mechanizmy-generowania-elementow-i-inicjalizacji-zbiorczej\">Automatyczne uzupe\u0142nianie tablic &#8211; mechanizmy generowania element\u00f3w i inicjalizacji zbiorczej<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Automatyczne uzupe\u0142nianie tablic oznacza tworzenie struktur na podstawie regu\u0142y.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-list-comprehension\">1. List comprehension<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [x * 2 for x in range(5)]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[0, 2, 4, 6, 8]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mechanizm:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>iteracja po sekwencji,<\/li>\n\n\n\n<li>obliczenie wyra\u017cenia,<\/li>\n\n\n\n<li>zapis do nowej listy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-inicjalizacja-powielona\">2. Inicjalizacja powielona<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [0] * 5<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uwaga: dla obiekt\u00f3w zagnie\u017cd\u017conych to tworzy referencje do tego samego obiektu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">B\u0142\u0105d:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [[0] * 3] * 3<br>a[0][0] = 9<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zmieni wszystkie wiersze, bo wskazuj\u0105 na ten sam obiekt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poprawnie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [[0 for _ in range(3)] for _ in range(3)]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-generowanie-slownikow\">3. Generowanie s\u0142ownik\u00f3w<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">d = {x: x*x for x in range(5)}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4-funkcja-enumerate\">4. Funkcja enumerate<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">a = [\"a\", \"b\", \"c\"]for i, v in enumerate(a):<br>    print(i, v)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To cz\u0119sty element Python: lista komend u\u017cywanych przy pracy z listami.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tablice-python-a-zlozonosc-obliczeniowa-podstawowych-operacji-i-ich-konsekwencje-praktyczne\">Tablice Python a z\u0142o\u017cono\u015b\u0107 obliczeniowa podstawowych operacji i ich konsekwencje praktyczne<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lista:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dost\u0119p przez indeks: O(1)<\/li>\n\n\n\n<li>append: amortyzowane O(1)<\/li>\n\n\n\n<li>insert w \u015brodku: O(n)<\/li>\n\n\n\n<li>usuni\u0119cie z pocz\u0105tku: O(n)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">S\u0142ownik:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dost\u0119p: \u015brednio O(1)<\/li>\n\n\n\n<li>wstawienie: \u015brednio O(1)<\/li>\n\n\n\n<li>iteracja: O(n)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Krotka:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dost\u0119p: O(1)<\/li>\n\n\n\n<li>brak operacji modyfikuj\u0105cych<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przy du\u017cych zbiorach danych r\u00f3\u017cnice staj\u0105 si\u0119 istotne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"python-lista-komend-i-python-komendy-lista-najczesciej-uzywane-przy-pracy-z-listami\">Python: lista komend i python: komendy lista najcz\u0119\u015bciej u\u017cywane przy pracy z listami<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsze operacje:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a.append(x)<br>a.insert(i, x)<br>a.remove(x)<br>a.pop()<br>a.sort()<br>a.reverse()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sortowanie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a.sort()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">lub<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">b = sorted(a)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sort()<\/code> modyfikuje list\u0119, <code>sorted()<\/code> tworzy now\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pulapki-i-czeste-bledy-przy-pracy-z-tablicami-w-python\">Pu\u0142apki i cz\u0119ste b\u0142\u0119dy przy pracy z tablicami w Python<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Mylenie kopii z referencj\u0105:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">b = a<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To nie kopia, tylko druga referencja.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poprawnie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">b = a.copy()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Modyfikacja listy podczas iteracji.<\/li>\n\n\n\n<li>U\u017cywanie listy zamiast s\u0142ownika przy wyszukiwaniu po kluczu.<\/li>\n\n\n\n<li>Zapominanie o przecinku w jednoelementowej krotce.<\/li>\n\n\n\n<li>B\u0142\u0119dne tworzenie wielowymiarowych struktur przez mno\u017cenie list.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tablice-znaczenie-struktur-sekwencyjnych-i-asocjacyjnych-w-projektowaniu-algorytmow\">Tablice &#8211; znaczenie struktur sekwencyjnych i asocjacyjnych w projektowaniu algorytm\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tablice w Python (listy, krotki, s\u0142owniki) s\u0105 podstaw\u0105 budowy algorytm\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sortowanie,<\/li>\n\n\n\n<li>wyszukiwanie,<\/li>\n\n\n\n<li>zliczanie cz\u0119sto\u015bci,<\/li>\n\n\n\n<li>implementacja stosu i kolejki,<\/li>\n\n\n\n<li>reprezentacja graf\u00f3w (lista s\u0105siedztwa jako s\u0142ownik list).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad reprezentacji grafu:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">graf = {<br>    1: [2, 3],<br>    2: [4],<br>    3: [],<br>    4: []<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tu s\u0142ownik mapuje wierzcho\u0142ek na list\u0119 s\u0105siad\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zrozumienie, czym s\u0105 listy, krotki i s\u0142owniki, oraz jakie maj\u0105 w\u0142a\u015bciwo\u015bci czasowe i semantyczne, jest warunkiem poprawnego projektowania program\u00f3w w Python. Tablice w tym sensie nie s\u0105 jedn\u0105 struktur\u0105, lecz zestawem mechanizm\u00f3w przechowywania danych, kt\u00f3re trzeba dobiera\u0107 \u015bwiadomie do konkretnego problemu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tablice w j\u0119zykach programowania s\u0105 sposobem przechowywania wielu warto\u015bci pod jedn\u0105 nazw\u0105. W klasycznych j\u0119zykach niskopoziomowych tablica oznacza zwykle ci\u0105g element\u00f3w tego samego typu, zapisanych w sp\u00f3jnym obszarze pami\u0119ci. W Python sytuacja jest bardziej z\u0142o\u017cona &#8211; poj\u0119cie \u201etablicy\u201d jest potoczne i obejmuje kilka r\u00f3\u017cnych struktur danych. W Python podstawowe \u201etablice\u201d to: listy, krotki i s\u0142owniki. Ka\u017cda z tych struktur ma inn\u0105 semantyk\u0119, inne w\u0142a\u015bciwo\u015bci i inne zastosowania. Wszystkie nale\u017c\u0105 do kategorii Python: struktury danych wbudowanych w j\u0119zyk. W dalszej cz\u0119\u015bci tekstu traktuj\u0119 je jako Tablice, bo pe\u0142ni\u0105 rol\u0119 kolekcji element\u00f3w. Tablice Python jako dynamiczne kontenery obiekt\u00f3w &#8211; czym s\u0105 i jak s\u0105 reprezentowane w pami\u0119ci W Python nie istnieje klasyczna tablica znana z j\u0119zyka C jako int arr[10]. Zamiast tego mamy obiekty dynamiczne. Ka\u017cda Tablica Python (lista, krotka, s\u0142ownik) przechowuje referencje do obiekt\u00f3w, a nie same warto\u015bci. To oznacza kilka rzeczy: W uproszczeniu: W odr\u00f3\u017cnieniu od j\u0119zyka C, Python nie wymaga deklarowania rozmiaru. Zarz\u0105dzanie pami\u0119ci\u0105 jest automatyczne. Tablice &#8211; listy w Python jako dynamiczne sekwencje indeksowane liczbami ca\u0142kowitymi Lista to najcz\u0119\u015bciej u\u017cywana Tablica Python. Jest: Tworzenie listy Python &#8211; podstawowe sposoby Najprostsza forma: a = [1, 2, 3] Pusta lista: a = [] Z u\u017cyciem konstruktora: a = list() Lista z zakresu: a = list(range(5)) Wynik: [0, 1, 2, 3, 4] Dost\u0119p do element\u00f3w a = [10, 20, 30]print(a[0]) # 10print(a[-1]) # 30 Indeksowanie ujemne liczy od ko\u0144ca. Modyfikacja element\u00f3w a = [1, 2, 3]a[1] = 100 Lista zmieni si\u0119 na [1, 100, 3]. Odpowiednik w C &#8211; klasyczna tablica statyczna #include &lt;stdio.h&gt;int main() { int a[3] = {1, 2, 3}; printf(&#8222;%d\\n&#8221;, a[1]); return 0;} Tutaj: Odpowiednik w C++ &#8211; std::vector jako dynamiczna tablica #include &lt;iostream&gt;#include &lt;vector&gt;int main() { std::vector&lt;int&gt; a = {1, 2, 3}; a.push_back(4); std::cout &lt;&lt; a[0] &lt;&lt; std::endl; return 0;} std::vector jest bli\u017cszy li\u015bcie Python ni\u017c klasyczna tablica C. Tworzenie tablic &#8211; krotek jako niemodyfikowalnych sekwencji danych Krotka (tuple) to struktura podobna do listy, ale niemodyfikowalna. Tworzenie krotki t = (1, 2, 3) Jednoelementowa krotka: t = (5,) Bez przecinka Python potraktuje to jako zwyk\u0142\u0105 warto\u015b\u0107. Mo\u017cna te\u017c zapisa\u0107 bez nawias\u00f3w: t = 1, 2, 3 Cechy krotki t = (10, 20, 30)print(t[1]) Dlaczego u\u017cywa\u0107 krotek Wewn\u0119trznie krotka nie musi zarz\u0105dza\u0107 nadmiarow\u0105 przestrzeni\u0105 jak lista, bo nie zmienia rozmiaru. Tworzenie tablic &#8211; s\u0142ownik\u00f3w jako struktur klucz-warto\u015b\u0107 opartych o funkcj\u0119 mieszaj\u0105c\u0105 S\u0142ownik w Python to implementacja tablicy haszuj\u0105cej. Tworzenie s\u0142ownika d = {&#8222;a&#8221;: 1, &#8222;b&#8221;: 2} Pusty s\u0142ownik: d = {} Z konstruktora: d = dict() Dost\u0119p do element\u00f3w print(d[&#8222;a&#8221;]) W s\u0142owniku nie u\u017cywa si\u0119 indeks\u00f3w liczbowych, tylko kluczy. W\u0142a\u015bciwo\u015bci Przyk\u0142ad dzia\u0142ania funkcji mieszaj\u0105cej Tablice &#8211; operacje wsp\u00f3lne dla list i krotek oraz ich znaczenie w przetwarzaniu danych Sekwencje w Python maj\u0105 wsp\u00f3lne operacje: tablica string W Python \u0142a\u0144cuch znak\u00f3w (str) dzia\u0142a jak niemodyfikowalna sekwencja znak\u00f3w, czyli jak krotka znak\u00f3w. s = &#8222;abc&#8221;print(s[0]) To r\u00f3wnie\u017c przyk\u0142ad sekwencji indeksowanej. Automatyczne uzupe\u0142nianie tablic &#8211; mechanizmy generowania element\u00f3w i inicjalizacji zbiorczej Automatyczne uzupe\u0142nianie tablic oznacza tworzenie struktur na podstawie regu\u0142y. 1. List comprehension a = [x * 2 for x in range(5)] Wynik: [0, 2, 4, 6, 8] Mechanizm: 2. Inicjalizacja powielona a = [0] * 5 Uwaga: dla obiekt\u00f3w zagnie\u017cd\u017conych to tworzy referencje do tego samego obiektu. B\u0142\u0105d: a = [[0] * 3] * 3a[0][0] = 9 Zmieni wszystkie wiersze, bo wskazuj\u0105 na ten sam obiekt. Poprawnie: a = [[0 for _ in range(3)] for _ in range(3)] 3. Generowanie s\u0142ownik\u00f3w d = {x: x*x for x in range(5)} 4. Funkcja enumerate a = [&#8222;a&#8221;, &#8222;b&#8221;, &#8222;c&#8221;]for i, v in enumerate(a): print(i, v) To cz\u0119sty element Python: lista komend u\u017cywanych przy pracy z listami. Tablice Python a z\u0142o\u017cono\u015b\u0107 obliczeniowa podstawowych operacji i ich konsekwencje praktyczne Lista: S\u0142ownik: Krotka: Przy du\u017cych zbiorach danych r\u00f3\u017cnice staj\u0105 si\u0119 istotne. Python: lista komend i python: komendy lista najcz\u0119\u015bciej u\u017cywane przy pracy z listami Najwa\u017cniejsze operacje: a.append(x)a.insert(i, x)a.remove(x)a.pop()a.sort()a.reverse() Sortowanie: a.sort() lub b = sorted(a) sort() modyfikuje list\u0119, sorted() tworzy now\u0105. Pu\u0142apki i cz\u0119ste b\u0142\u0119dy przy pracy z tablicami w Python b = a To nie kopia, tylko druga referencja. Poprawnie: b = a.copy() Tablice &#8211; znaczenie struktur sekwencyjnych i asocjacyjnych w projektowaniu algorytm\u00f3w Tablice w Python (listy, krotki, s\u0142owniki) s\u0105 podstaw\u0105 budowy algorytm\u00f3w: Przyk\u0142ad reprezentacji grafu: graf = { 1: [2, 3], 2: [4], 3: [], 4: []} Tu s\u0142ownik mapuje wierzcho\u0142ek na list\u0119 s\u0105siad\u00f3w. Zrozumienie, czym s\u0105 listy, krotki i s\u0142owniki, oraz jakie maj\u0105 w\u0142a\u015bciwo\u015bci czasowe i semantyczne, jest warunkiem poprawnego projektowania program\u00f3w w Python. Tablice w tym sensie nie s\u0105 jedn\u0105 struktur\u0105, lecz zestawem mechanizm\u00f3w przechowywania danych, kt\u00f3re trzeba dobiera\u0107 \u015bwiadomie do konkretnego problemu.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1031,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1041","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1041"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1041\/revisions"}],"predecessor-version":[{"id":1043,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1041\/revisions\/1043"}],"up":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1031"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}