Przejdź do treści
Matura 2027 • Zadania praktyczne

Struktury Danych (Kolekcje)

Przed Tobą 10 zadań testowych. Sprawdź, czy Twoja wiedza z działu Struktury Danych (Kolekcje) wystarczy, by zdobyć komplet punktów na maturze.

Pytanie 1 / 10Programowanie
Która z wbudowanych funkcji w Pythonie poprawnie zwróci sumę wszystkich elementów w liście `liczby`?
Wszystkie 10 pytań z wyjaśnieniamiRozwiń, jeśli wolisz przejrzeć zestaw bez rozwiązywania testu.

Python ma potężne wbudowane struktury, które na maturze zastępują pisanie setek linijek kodu. Listy, tablice 2D, słowniki i zbiory.

1.Która z wbudowanych funkcji w Pythonie poprawnie zwróci sumę wszystkich elementów w liście `liczby`?

  • A.`total(liczby)`
  • B.`sum(liczby)`— poprawna
  • C.`add_all(liczby)`
  • D.`liczby.sum()`
Dlaczego: W Pythonie istnieje wbudowana funkcja `sum()`, która przyjmuje jako argument obiekt iterowalny (np. listę) i zwraca sumę jego elementów. Zastępuje to w pełni konieczność pisania własnej pętli ze zmienną akumulacyjną.

2.Chcesz dodać nowy element na sam koniec istniejącej listy `tablica`. Której z metod użyjesz?

  • A.`.add()`
  • B.`.insert()`
  • C.`.append()`— poprawna
  • D.`.push()`
Dlaczego: Metoda `.append()` dodaje przekazany argument jako pojedynczy element na samym końcu listy. Z kolei np. `.insert()` wymaga podania dodatkowo indeksu, na którym ma zostać wstawiony element.

3.Mając listę `L = [10, 20, 30, 40, 50]`, jaki wynik otrzymamy po wywołaniu operacji `L[1:4]`?

  • A.`[10, 20, 30, 40]`
  • B.`[20, 30, 40]`— poprawna
  • C.`[20, 30, 40, 50]`
  • D.`[10, 20, 30]`
Dlaczego: Wycinek (slicing) `[start:stop]` zaczyna się od indeksu `start` włącznie (indeks 1 to liczba 20) i kończy PRZED indeksem `stop` (indeks 4 to liczba 50, więc nie jest ona brana pod uwagę). Otrzymamy listę `[20, 30, 40]`.

4.Co zwróci bardzo popularna na maturze operacja `lista[::-1]` wywołana na liście `lista = [1, 2, 3, 4]`?

  • A.Błąd składniowy
  • B.`[4, 3, 2, 1]`— poprawna
  • C.`[1]`
  • D.`[1, 2, 3, 4]`
Dlaczego: Zapis `[::-1]` to tzw. idiom odwracania listy. Trzeci parametr w wycinku oznacza krok iteracji. Krok `-1` oznacza przechodzenie przez listę od samego końca do początku, co skutkuje zwróceniem jej odwróconej kopii.

5.Jak poprawnie odwołać się do elementu znajdującego się w 3. wierszu i 2. kolumnie (licząc standardowo od indeksu 0) w tablicy dwuwymiarowej `T`?

  • A.`T[3, 2]`
  • B.`T[2][3]`
  • C.`T[3][2]`— poprawna
  • D.`T(3)(2)`
Dlaczego: Tablica 2D w Pythonie to w rzeczywistości lista list. Pierwszy nawias kwadratowy `T[3]` wyciąga całą wewnętrzną listę (odpowiedni wiersz), a drugi `[2]` pobiera konkretny element z wyciągniętego przed chwilą wiersza (odpowiednią kolumnę).

6.Masz zadaną tablicę dwuwymiarową `plansza`. Który z poniższych zapisów to najczytelniejszy (pythoniczny) sposób na przeiterowanie przez każdy pojedynczy jej element?

  • A.`for wiersz in plansza: for element in wiersz:`— poprawna
  • B.`for element in plansza:`
  • C.`for i in len(plansza): for j in len(plansza[i]):`
  • D.`for wiersz in plansza: element = wiersz`
Dlaczego: Ponieważ `plansza` to lista list, pierwsza pętla `for wiersz in plansza:` iteruje po wierszach. Druga, zagnieżdżona w niej pętla `for element in wiersz:` iteruje już po pojedynczych wartościach wewnątrz aktualnie przetworzonego wiersza.

7.Dlaczego słowniki (`dict`) są idealną strukturą do maturalnych zadań polegających na zliczaniu wystąpień (np. liter lub liczb)?

  • A.Ponieważ automatycznie sortują wprowadzane elementy alfabetycznie.
  • B.Ponieważ zajmują najmniej miejsca w pamięci RAM ze wszystkich struktur.
  • C.Ponieważ pozwalają na użycie elementów jako unikalnych kluczy, a liczby ich wystąpień jako wartości.— poprawna
  • D.Ponieważ posiadają wbudowaną metodę `.count_all()`.
Dlaczego: Słowniki mapują klucze (np. konkretną literę) na wartości (np. liczbę jej wystąpień w tekście). Umożliwia to bardzo łatwą i błyskawiczną modyfikację licznika dla dowolnego napotkanego znaku za pomocą np. zapisu `slownik[znak] += 1`.

8.Co się stanie, gdy spróbujesz odczytać wartość dla klucza, którego jeszcze nie ma w słowniku, używając zapisu `slownik["nieznany_klucz"]`?

  • A.Zwróci wartość `None`.
  • B.Zwróci wartość `0`.
  • C.Program wyrzuci błąd `KeyError` i przerwie działanie.— poprawna
  • D.Klucz zostanie automatycznie dodany z wartością `None`.
Dlaczego: Bezpośrednie odwołanie się do nieistniejącego klucza przez nawiasy kwadratowe zawsze rzuca błędem `KeyError`. Aby tego uniknąć, można skorzystać z bezpiecznej metody `slownik.get("klucz", domyslna)` lub sprawdzić wpierw obecność klucza operatorem `in`.

9.Potrzebujesz błyskawicznie usunąć wszystkie duplikaty z długiej listy `duza_lista`. Jaki jest najszybszy sposób w Pythonie?

  • A.`list(set(duza_lista))`— poprawna
  • B.`duza_lista.remove_duplicates()`
  • C.`unique(duza_lista)`
  • D.`duza_lista.clear()`
Dlaczego: Struktura danych `set` (zbiór) z definicji przechowuje tylko unikalne elementy. Zrzutowanie listy na zbiór `set(duza_lista)` automatycznie usuwa (filtruje) wszystkie duplikaty. Ponowne użycie `list()` zamienia zbiór z powrotem na użyteczną dla nas listę.

10.Która z unikalnych cech zbiorów (`set`) sprawia, że operacja sprawdzania, czy element znajduje się wewnątrz (`x in zbior`), jest ekstremalnie szybka?

  • A.Elementy zbioru są domyślnie sortowane malejąco, co ułatwia szukanie.
  • B.Zbiory wykorzystują pod spodem tablice mieszające (hash tables).— poprawna
  • C.Zbiory przechowują dane na dysku twardym zamiast w pamięci RAM.
  • D.Zbiory w Pythonie mają hardkodowany limit mniejszy niż 100 elementów.
Dlaczego: Zbiory (podobnie jak klucze w słownikach) opierają się na koncepcji tablic mieszających. Dzięki temu operacja sprawdzenia, czy dany element należy do zbioru (tzw. operacja look-up), odbywa się w czasie niemal stałym O(1), niezależnie od wielkości zbioru.

O czym musisz pamiętać w zadaniach z Programowania?

Zadania z programowania na maturze to sprawdzian logicznego myślenia, znajomości klasycznych algorytmów (np. sortowania, wyszukiwania, operacji na liczbach i napisach) oraz czytania ze zrozumieniem.

  • Pamiętaj, że w Pythonie indeksowanie struktur (jak listy czy napisy) zaczyna się od 0, natomiast w pseudokodzie CKE najczęściej od 1.
  • Zwracaj szczególną uwagę na poprawne wczytywanie danych – pamiętaj o rzutowaniu na odpowiednie typy (np. int()) i pozbywaniu się białych znaków (strip()).
  • Dbaj o złożoność obliczeniową. Jeśli to możliwe, unikaj wielokrotnie zagnieżdżonych pętli, aby Twój program zdążył się wykonać w regulaminowym czasie.

Strategia Maturalna (Python / Algorytmy):

"Zanim rzucisz się do pisania kodu na komputerze, zrozum problem na kartce papieru. Zawsze korzystaj z danych z pliku przyklad.txtw trakcie testowania swoich rozwiązań. Jeśli odpowiedź zgadza się z plikiem z odpowiedziami do przykładu, masz ogromne szanse, że Twój kod zadziała poprawnie również dla głównych danych z arkusza."

To nie koniec powtórki!

Przećwicz kolejny zestaw pytań i utrwal składnię oraz algorytmy.

Dalej: Klasyczne Algorytmy Liczbowe