R1634PF3HAQNQ

I_R_PY_W13A_M06 Zbiory

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

W przedstawionej poniżej prezentacji zostały omówione najważniejsze cechy struktur danych wykorzystywanych przy rozwiązywaniu problemów w języku Python. Zwróć uwagę na sposób definiowania każdej z tych struktur oraz na powiązane z nimi metody i funkcje. Następnie rozwiąż Problem 1

1
ReBxwkXD0WEdv

Krotki, słowniki i zbiory – złożone typy danych

RqifosjrbiPSx
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
RlZxsdDCSpQRj

Zmienne z jedną wartością

RpeCymjRC1oXp
Źródło: Pixabay, domena publiczna.
1,1
  • W prostych zmiennych możemy zapisać tylko pojedyncze wartości.

  • Kiedy chcemy zapamiętać nowe dane, musimy tworzyć nowe zmienne.

  • Związek między pojedynczymi wartościami nie jest oczywisty.

Przykładowe zmienne typu prostego, które przechowują jedną wartość:

Linia 1. bok1 znak równości 3. Linia 2. bok2 znak równości 4. Linia 3. bok3 znak równości 5. Linia 4. obwod znak równości bok1 plus bok2 plus bok3. Linia 5. imie znak równości cudzysłów Jan cudzysłów. Linia 6. nazwisko znak równości cudzysłów Dobry cudzysłów. Linia 7. ocena znak równości 3.
R1WsEkq8kSzhR

Typy złożone

Dzięki typom złożonym możemy zapisywać wiele wartości w jednym nazwanym pojemniku, czyli w strukturze danych.

Przykłady typów złożonych w języku Python:

  • listy;

  • krotki;

  • słowniki;

  • zbiory.

Poszczególne typy różnią się od siebie. W tym e‑materiale omawiamy trzy z nich: krotki, słowniki oraz zbiory.

R1EoiHypncOQK

Krotki

Struktura krotki:

Linia 1. krotka znak równości otwórz nawias okrągły x przecinek y przecinek z zamknij nawias okrągły.

ID

Imię

Nazwisko

Ocena

1

Anna 

Kowalska 

 4

Piotr 

Nowak 

 5

Jan 

Dobry 

 3

1,1

Przykładowy kod

Uruchom w interpreterze języka Python:

Linia 1. kratka Tworzenie krotek. Linia 2. osoba1 znak równości otwórz nawias okrągły 1 przecinek apostrof Anna apostrof przecinek apostrof Kowalska apostrof przecinek 4 zamknij nawias okrągły. Linia 3. osoba2 znak równości tuple otwórz nawias okrągły otwórz nawias kwadratowy 2 przecinek apostrof Piotr apostrof przecinek apostrof Nowak apostrof przecinek 5 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 4. dane znak równości otwórz nawias kwadratowy apostrof 3 apostrof przecinek apostrof Jan apostrof przecinek apostrof Dobry apostrof przecinek apostrof 3 apostrof zamknij nawias kwadratowy. Linia 5. osoba3 znak równości tuple otwórz nawias okrągły dane zamknij nawias okrągły. Linia 7. kratka Odczytywanie wartości. Linia 8. print otwórz nawias okrągły osoba1 otwórz nawias kwadratowy 1 zamknij nawias kwadratowy przecinek osoba1 otwórz nawias kwadratowy 2 zamknij nawias kwadratowy przecinek osoba3 otwórz nawias kwadratowy 3 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 10. kratka Modyfikacja elementu listy. Linia 11. dane otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof Adam apostrof. Linia 12. print otwórz nawias okrągły dane zamknij nawias okrągły. Linia 14. kratka Modyfikacja elementu krotki daje błąd. Linia 15. osoba3 otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości apostrof Ola apostrof.

Charakterystyka

  • Krotki to niemodyfikowalny typ danych. Raz stworzona krotka nie może zmieniać swojej zawartości, nie da się do niej dodawać elementów ani ich usuwać.

  • Do zawartości krotek można odwoływać się, wykorzystując indeksy.

  • Możemy iterować po zawartości krotki, wykorzystując pętlę.

  • Elementy krotki mogą być różnego typu.

RR6yzQHqlBFUr

Zastosowanie krotek

Uruchom w interpreterze języka Python:

Rlf3hlux4saKy
Film nawiązujący do treści materiału

Kod zaprezentowany w filmie:

Linia 1. boki podkreślnik trojkata znak równości otwórz nawias okrągły 3 przecinek 4 przecinek 5 zamknij nawias okrągły. Linia 2. oceny znak równości otwórz nawias okrągły 4 przecinek 5 przecinek 3 przecinek 4 przecinek 4 przecinek 4 zamknij nawias okrągły. Linia 4. oceny kropka count otwórz nawias okrągły 4 zamknij nawias okrągły. Linia 6. oceny kropka count otwórz nawias okrągły 5 zamknij nawias okrągły. Linia 8. obwod podkreślnik trojkata znak równości sum otwórz nawias okrągły boki podkreślnik trojkata zamknij nawias okrągły. Linia 10. len otwórz nawias okrągły oceny zamknij nawias okrągły. Linia 12. max otwórz nawias okrągły oceny zamknij nawias okrągły. Linia 14. min otwórz nawias okrągły oceny zamknij nawias okrągły.

Skrypt, który możesz wpisać i uruchomić:

Linia 1. boki podkreślnik trojkata znak równości otwórz nawias okrągły 3 przecinek 4 przecinek 5 zamknij nawias okrągły. Linia 2. oceny znak równości otwórz nawias okrągły 4 przecinek 5 przecinek 3 przecinek 4 przecinek 4 przecinek 4 zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły oceny kropka count otwórz nawias okrągły 4 zamknij nawias okrągły zamknij nawias okrągły. Linia 6. print otwórz nawias okrągły oceny kropka count otwórz nawias okrągły 5 zamknij nawias okrągły zamknij nawias okrągły. Linia 8. obwod podkreślnik trojkata znak równości sum otwórz nawias okrągły boki podkreślnik trojkata zamknij nawias okrągły. Linia 10. print otwórz nawias okrągły obwod podkreślnik trojkata zamknij nawias okrągły. Linia 12. print otwórz nawias okrągły len otwórz nawias okrągły oceny zamknij nawias okrągły zamknij nawias okrągły. Linia 14. print otwórz nawias okrągły max otwórz nawias okrągły oceny zamknij nawias okrągły zamknij nawias okrągły. Linia 16. print otwórz nawias okrągły min otwórz nawias okrągły oceny zamknij nawias okrągły zamknij nawias okrągły.

Wynik działania programu:

Linia 1. 4. Linia 2. 1. Linia 3. 12. Linia 4. 6. Linia 5. 5. Linia 6. 3.
Re9Anc3cxbFZd

Słownik

Przykładem innej struktury złożonej jest słownik.

Struktura słownika:

Linia 1. słownik znak równości otwórz nawias klamrowy klucz dwukropek wartość zamknij nawias klamrowy.

Przykładowy kod

1,1

Uruchom w interpreterze języka Python:

Linia 1. kratka Tworzenie słownika. Linia 2. osoba podkreślnik 1 znak równości otwórz nawias klamrowy apostrof lp apostrof dwukropek 1 przecinek apostrof imie apostrof dwukropek apostrof Anna apostrof przecinek apostrof nazwisko apostrof dwukropek apostrof Kowalska apostrof zamknij nawias klamrowy. Linia 3. osoba podkreślnik 2 znak równości dict otwórz nawias okrągły lp znak równości 2 przecinek imie znak równości apostrof Jan apostrof przecinek nazwisko znak równości apostrof Nowak apostrof zamknij nawias okrągły. Linia 4. osoby znak równości otwórz nawias klamrowy 1 dwukropek osoba podkreślnik 1 przecinek 2 dwukropek osoba podkreślnik 2 zamknij nawias klamrowy. Linia 6. kratka Odczytywanie wartości. Linia 7. print otwórz nawias okrągły osoba podkreślnik 1 otwórz nawias kwadratowy apostrof imie apostrof zamknij nawias kwadratowy zamknij nawias okrągły. Linia 8. print otwórz nawias okrągły osoba podkreślnik 2 kropka get otwórz nawias okrągły apostrof imie apostrof zamknij nawias okrągły zamknij nawias okrągły. Linia 9. print otwórz nawias okrągły osoby otwórz nawias kwadratowy 1 zamknij nawias kwadratowy otwórz nawias kwadratowy apostrof imie apostrof zamknij nawias kwadratowy zamknij nawias okrągły. Linia 10. print otwórz nawias okrągły osoba podkreślnik 1 kropka values otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 12. kratka Dodawanie i zmienianie wartości. Linia 13. osoba podkreślnik 2 otwórz nawias kwadratowy apostrof ocena apostrof zamknij nawias kwadratowy znak równości 4. Linia 14. osoba podkreślnik 2 otwórz nawias kwadratowy apostrof imie apostrof zamknij nawias kwadratowy znak równości apostrof Piotr apostrof. Linia 15. osoba podkreślnik 2.

Charakterystyka

  • W słowniku przechowujemy pary elementów (klucze oraz wartości). Są one modyfikowalne.

  • Do wartości znajdujących się w słowniku odwołujemy się za pomocą klucza.

  • Klucze oraz wartości mogą być dowolnego typu.

  • Możliwe jest iterowanie po elementach słownika.

RvjcyRc1wpCMg
RqUCXEeXMWnFh

Zastosowanie słowników

1,1
Uruchom w interpreterze języka Python:
Linia 2. rzymskie znak równości otwórz nawias klamrowy 1 dwukropek apostrof I apostrof przecinek 2 dwukropek apostrof II apostrof przecinek 3 dwukropek apostrof III apostrof zamknij nawias klamrowy. Linia 3. rzymskie otwórz nawias kwadratowy 2 zamknij nawias kwadratowy. Linia 5. kolory znak równości otwórz nawias klamrowy zamknij nawias klamrowy kratka Pusty słownik. Linia 6. kolory otwórz nawias kwadratowy apostrof red apostrof zamknij nawias kwadratowy znak równości apostrof kratka FF0000 apostrof. Linia 7. kolory otwórz nawias kwadratowy apostrof blue apostrof zamknij nawias kwadratowy znak równości apostrof kratka 00FF00 apostrof. Linia 8. kolory otwórz nawias kwadratowy apostrof blue apostrof zamknij nawias kwadratowy. Linia 10. samochod znak równości otwórz nawias klamrowy apostrof nazwa apostrof dwukropek apostrof syrena apostrof przecinek apostrof model apostrof dwukropek apostrof 105 apostrof przecinek apostrof rocznik apostrof dwukropek 1972 zamknij nawias klamrowy. Linia 11. print otwórz nawias okrągły samochod otwórz nawias kwadratowy apostrof nazwa apostrof zamknij nawias kwadratowy przecinek samochod otwórz nawias kwadratowy apostrof model apostrof zamknij nawias kwadratowy zamknij nawias okrągły. Linia 12. samochod kropka get otwórz nawias okrągły apostrof rocznik apostrof zamknij nawias okrągły. Linia 14. list otwórz nawias okrągły kolory zamknij nawias okrągły kratka Zwraca listę kluczy. Linia 15. len otwórz nawias okrągły kolory zamknij nawias okrągły kratka Liczba elementów. Linia 16. del kolory otwórz nawias kwadratowy apostrof blue apostrof zamknij nawias kwadratowy kratka Usunięcie wartości. Linia 17. print otwórz nawias okrągły kolory zamknij nawias okrągły.
R1BKZihIh1R3T
RoqF1JiyeIjOE
1,1

Zbiór

Inną strukturą złożoną jest zbiór.

Struktura zbioru:

Linia 1. zbiór znak równości otwórz nawias klamrowy apostrof a apostrof przecinek apostrof b apostrof przecinek apostrof c apostrof zamknij nawias klamrowy.
R9cb2quX3wqnk
Źródło: Contentplus sp. z o.o., licencja: CC BY 3.0.

Zbiory

1,1
Uruchom w interpreterze języka Python:
Linia 1. kratka Tworzenie zbioru. Linia 2. samogloski znak równości set otwórz nawias okrągły zamknij nawias okrągły. Linia 3. samogloski. Linia 5. unikalne podkreślnik liczby znak równości set otwórz nawias okrągły otwórz nawias kwadratowy 1 przecinek 3 przecinek 3 przecinek 5 przecinek 7 przecinek 9 przecinek 9 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 6. unikalne podkreślnik liczby. Linia 8. unikalne podkreślnik litery znak równości set otwórz nawias okrągły apostrof abrakadabra apostrof zamknij nawias okrągły. Linia 9. unikalne podkreślnik litery. Linia 10. gloski znak równości otwórz nawias klamrowy apostrof b apostrof przecinek apostrof c apostrof przecinek apostrof d apostrof zamknij nawias klamrowy. Linia 12. kratka Wartości w zbiorach nie są indeksowane. Linia 13. print otwórz nawias okrągły gloski otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły.
R1c1mP8Gp3Sz3
RybXDLM6aVqPz

Zastosowanie zbiorów

1,1
Uruchom w interpreterze języka Python:
Linia 1. pola znak równości otwórz nawias klamrowy apostrof A1 apostrof przecinek apostrof A2 apostrof przecinek apostrof A3 apostrof zamknij nawias klamrowy. Linia 2. zajete znak równości otwórz nawias klamrowy apostrof A2 apostrof przecinek apostrof A3 apostrof zamknij nawias klamrowy. Linia 3. inne znak równości otwórz nawias klamrowy apostrof B1 apostrof przecinek apostrof B2 apostrof przecinek apostrof B3 apostrof zamknij nawias klamrowy. Linia 5. kratka Dodawanie i usuwanie elementów. Linia 6. pola kropka add otwórz nawias okrągły apostrof A4 apostrof zamknij nawias okrągły. Linia 7. print otwórz nawias okrągły pola zamknij nawias okrągły. Linia 8. pola kropka discard otwórz nawias okrągły apostrof A1 apostrof zamknij nawias okrągły. Linia 9. print otwórz nawias okrągły pola zamknij nawias okrągły. Linia 11. kratka Operacje na zbiorach. Linia 12. len otwórz nawias okrągły pola zamknij nawias okrągły kratka Liczba elementów. Linia 13. pola kreska pionowa inne kratka Suma zbiorów. Linia 14. pola ampersant zajete kratka Część wspólna. Linia 15. pola minus zajete kratka Różnica zbiorów.
R1ZXsQFeerjSA
R7GAQggkb1Ano

Krotki, słowniki, zbiory – podobieństwa

1,1

Uruchom w interpreterze języka Python:

Linia 1. krotka znak równości otwórz nawias okrągły 7 przecinek 3 przecinek 5 zamknij nawias okrągły. Linia 2. slownik znak równości otwórz nawias klamrowy 7 dwukropek apostrof g apostrof przecinek 3 dwukropek apostrof c apostrof przecinek 5 dwukropek apostrof e apostrof zamknij nawias klamrowy. Linia 3. zbior znak równości otwórz nawias klamrowy 8 przecinek 4 przecinek 6 przecinek 5 zamknij nawias klamrowy. Linia 5. kratka Liczba elementów. Linia 6. print otwórz nawias okrągły len otwórz nawias okrągły krotka zamknij nawias okrągły przecinek len otwórz nawias okrągły slownik zamknij nawias okrągły przecinek len otwórz nawias okrągły zbior zamknij nawias okrągły zamknij nawias okrągły. Linia 8. kratka Czy w strukturze jest element znak zapytania. Linia 9. 3 in krotka. Linia 10. 4 in zbior. Linia 11. 5 in slownik. Linia 12. 4 in slownik. Linia 14. kratka Suma wartości liczbowych lub kluczy. Linia 15. print otwórz nawias okrągły sum otwórz nawias okrągły krotka zamknij nawias okrągły przecinek sum otwórz nawias okrągły zbior zamknij nawias okrągły przecinek sum otwórz nawias okrągły slownik zamknij nawias okrągły zamknij nawias okrągły. Linia 17. kratka Wartość minimalna i maksymalna. Linia 18. print otwórz nawias okrągły min otwórz nawias okrągły krotka zamknij nawias okrągły przecinek min otwórz nawias okrągły zbior zamknij nawias okrągły przecinek min otwórz nawias okrągły slownik zamknij nawias okrągły zamknij nawias okrągły. Linia 19. print otwórz nawias okrągły max otwórz nawias okrągły krotka zamknij nawias okrągły przecinek max otwórz nawias okrągły zbior zamknij nawias okrągły przecinek max otwórz nawias okrągły slownik zamknij nawias okrągły zamknij nawias okrągły.
RvfMPWyef6BBi
Głośność lektora
Głośność muzyki
Problem 1

Jesteś kinomaniakiem i masz mnóstwo ulubionych filmów! Chcesz je uporządkować w taki sposób, aby:

  1. Móc przechowywać listę tytułów wszystkich Twoich ulubionych filmów.

  2. Dla każdego filmu móc szybko sprawdzić jego gatunekrok wydania.

Jakie struktury danych w Pythonie pomogą Ci rozwiązać ten problem?

Napisz program, który umożliwi swobodne przetwarzanie twoich filmów