CodeGym /Kursy /Python SELF PL /Pobieranie podzbioru

Pobieranie podzbioru

Python SELF PL
Poziom 9 , Lekcja 4
Dostępny

4.1 Pobieranie podzbioru według reguły

Podzbiór to zbiór, którego wszystkie elementy należą do innego, większego zbioru. W Pythonie istnieje kilka wbudowanych metod i operatorów do pracy z podzbiorami. Poniżej opowiem, jak uzyskać podzbiory, jak sprawdzić, czy jeden zbiór jest podzbiorem innego oraz jak wykorzystać tę wiedzę w różnych scenariuszach.

Użycie pętli for

Możesz utworzyć pusty zbiór i dodawać do niego elementy spełniające warunek za pomocą pętli for.


my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
            
for x in my_set:
    if x % 2 == 0:
        even_set.add(x)
            
print(even_set)  # Wypisanie: {2, 4, 6, 8, 10}
        

To jest najprostszy i najbardziej oczywisty sposób stworzenia podzbioru. Ale są jeszcze inne, bardziej zwięzłe sposoby.

Użycie funkcji filter()

Funkcja filter() stosuje funkcję do każdego elementu i zwraca tylko te elementy, dla których funkcja zwróciła True. Wynik trzeba przekształcić z powrotem w zbiór.


my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set(filter(lambda x: x % 2 == 0, my_set))
print(even_set)  # Wypisanie: {2, 4, 6, 8, 10}
        

Wewnątrz funkcji filter() używane jest wyrażenie lambda - to taki skrócony sposób zadania funkcji serwisowej lub reguły do filtrowania. O lambdach opowiem za kilka lekcji.

4.2 Użycie generatorów zbiorów

Pamiętasz List Comprehension? Kiedy w nawiasach kwadratowych zadawaliśmy szybki sposób generowania listy i jej elementów? To narzędzie składniowe miało taki wygląd:


[wyrażenie for zmienna in sekwencja]

Gdzie:

  • zmienna — identyfikator jakiejś zmiennej,
  • sekwencja — sekwencja wartości, które przyjmuje dana zmienna (to może być lista, łańcuch znaków lub obiekt otrzymany za pomocą funkcji range),
  • wyrażenie — jakieś wyrażenie, zazwyczaj zależne od użytej w generatorze zmiennej, którym będą wypełnione elementy listy.

Dla zbiorów istnieje analogiczna funkcja, tylko trzeba użyć nawiasów klamrowych:


{wyrażenie for zmienna in sekwencja}

Generatory zbiorów pozwalają łatwo i zwięźle tworzyć nowe zbiory na podstawie istniejących, stosując warunki filtrowania.

Oto jak można wybrać tylko parzyste elementy z zbioru:


my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = {x for x in my_set if x % 2 == 0} 
print(even_set)  # Wypisanie: {2, 4, 6, 8, 10} 

A oto jak wybrać tylko łańcuchy znaków:


my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, "jabłko", "banan"}
even_set = {x for x in my_set if type(x) == str}
print(even_set)  # Wypisanie: {"jabłko", "banan"}

4.3 Sprawdzanie obecności elementu

Jedną z podstawowych operacji, jakie można wykonywać na zbiorach, jest sprawdzanie obecności elementu w zbiorze. W Pythonie istnieje kilka sposobów, aby to zrobić. Przeanalizujmy różne metody sprawdzania, czy element jest obecny w zbiorze.

Użycie operatora in

Najbardziej powszechny i wygodny sposób sprawdzania obecności elementu w zbiorze — to użycie operatora in. Ta metoda zwraca True, jeśli element jest obecny w zbiorze, i False w przeciwnym razie.


my_set = {1, 2, 3, 4, 5}
print(3 in my_set)  # Wypisanie: True
print(6 in my_set)  # Wypisanie: False
            

Użycie operatora not in

Operator not in jest przeciwieństwem operatora in i służy do sprawdzania, czy element nie jest obecny w zbiorze. Zwraca True, jeśli element nie jest obecny w zbiorze, i False w przeciwnym razie.


my_set = {1, 2, 3, 4, 5}
print(6 not in my_set)  # Wypisanie: True
print(3 not in my_set)  # Wypisanie: False

Użycie pętli

Chociaż użycie pętli do sprawdzania obecności elementu w zbiorze nie jest najbardziej efektywnym sposobem, może być przydatne w sytuacjach, kiedy pracujesz z bardziej złożonymi strukturami danych lub wykonujesz dodatkowe operacje.


my_set = {1, 2, 3, 4, 5}
element = 3
found = False
            
for item in my_set:
    if item == element:
        found = True
        break
            
print(found)  # Wypisanie: True
        

4.4 Sprawdzanie zagnieżdżenia zbiorów

Python dostarcza operator < <= i metodę issubset() dla sprawdzania, czy jeden zbiór jest podzbiorem drugiego.

Użycie operatora <=

Operator <= pozwala łatwo sprawdzić, czy jeden zbiór jest podzbiorem drugiego.


set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
            
print(set_a <= set_b)  # Wypisanie: True
print(set_b <= set_a)  # Wypisanie: False
            
        

Użycie metody issubset()

Metoda issubset() wykonuje tę samą funkcję co operator <=, i zwraca True, jeśli wszystkie elementy jednego zbioru są zawarte w drugim.


set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
            
print(set_a.issubset(set_b))  # Wypisanie: True
print(set_b.issubset(set_a))  # Wypisanie: False
        

Sprawdzanie na nadzbiór

Podobnie jak z podzbiorami, możesz sprawdzić, czy jeden zbiór jest nadzbiorem drugiego, używając operatora >= i metody issuperset().

Użycie operatora >=


set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
            
print(set_a >= set_b)  # Wypisanie: True
print(set_b >= set_a)  # Wypisanie: False
            
        

Użycie metody issuperset()


set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
            
print(set_a.issuperset(set_b))  # Wypisanie: True
print(set_b.issuperset(set_a))  # Wypisanie: False
            
        
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION