Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Zbiory
In Progress

Python • kurs podstawowy • lekcja 21

Zbiory

Dwie grupy wybrały zajęcia.

Twój cel: Dobierzesz zbiór do unikalnych danych i obliczysz część wspólną, sumę oraz różnicę.

Listy i sprawdzanie warunków.

Od potrzeby do kodu

Chcesz poznać wspólne wybory bez powtórek. set przechowuje unikalne elementy i pozwala sprawdzać obecność przez in. Nie ma indeksów ani gwarantowanej kolejności iteracji. Wybierz listę, gdy kolejność lub liczba powtórzeń jest informacją.

a | b tworzy sumę zbiorów, a & b część wspólną, a a - b elementy z a nieobecne w b. Różnica jest kierunkowa: a - b może być inne niż b - a. Pusty zbiór zapisujemy set(); {} tworzy pusty słownik.

set([1, 1, 2]) tworzy zbiór z listy i usuwa powtórzenia. add dodaje element; powtórne dodanie tej samej wartości nie zwiększa długości. Używamy napisów i liczb. Listy nie nadają się na elementy zbioru, bo są mutowalne i nie mają wymaganego stabilnego hasha.

Przewidź przed uruchomieniem

a = {"Python", "Git"}
b = {"Python", "HTML"}
print(a & b)
print(a - b)
print(len(a | b))
print("Git" in b)
Porównaj wynik i prześledź mechanizm
Zbiór zachowuje obecność elementu, ale nie liczbę jego powtórzeń ani pozycję.
Zbiór zachowuje obecność elementu, ale nie liczbę jego powtórzeń ani pozycję.

Część wspólna zawiera tylko Python, różnica a - b tylko Git. Suma ma 3 elementy. Ostatnia odpowiedź to False. Nie oceniaj poprawności zbioru przez kolejność wydruku.

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

{'Python'}
{'Git'}
3
False
Element W a W b Obszar
Git tak nie Tylko a
Python tak tak Część wspólna
HTML nie tak Tylko b
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

Zmień działający program

Utwórz pusty zbiór i dodaj dwa razy Python. Sprawdź długość.

Pierwsza wskazówka

Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.

Porównaj swoją modyfikację
topics = set()
topics.add("Python")
topics.add("Python")
print(len(topics))

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

1

Znajdź przyczynę problemu

Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.

Zamierzone działanie: Dodaj Python do pustego zbioru.

topics = {}
topics.add("Python")
Trop do diagnozy

Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.

Zastosuj w nowej sytuacji

Wskazówka do rozpoczęcia

Zbiór zachowuje obecność elementu, ale nie liczbę jego powtórzeń ani pozycję.

Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:

visits = [101, 101, 102, 103, 102]
Rozwiązanie do samodzielnej kontroli
visits = [101, 101, 102, 103, 102]
rooms = set(visits)
print(len(rooms))
print(len(visits))

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

3
5

Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.

Co zabierasz do kolejnego programu?

Zbiór zachowuje obecność elementu, ale nie liczbę jego powtórzeń ani pozycję.

Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.