Jak używać nierównych i równych operatorów Pythona

W języku Python dostępne są operatory porównania, które pozwalają na sprawdzenie, czy dwie zmienne posiadają identyczną wartość, czy też się różnią. W niniejszym przewodniku zgłębimy tajniki działania tych operatorów, prezentując obszerne przykłady kodu.

W trakcie lektury tego artykułu, poznasz:

  • Sposób użycia operatora nierówności (!=) oraz konteksty jego zastosowania,
  • Konstrukcję operatora równości (==) wraz z ilustracjami,
  • Wykorzystanie operatorów 'is’ oraz 'is not’ do weryfikacji, czy dwa obiekty Python są faktycznie tym samym obiektem w pamięci.

Przejdźmy więc do sedna sprawy.

Sposób użycia operatora nierówności w Pythonie

Dla dowolnych dwóch obiektów w Pythonie, które nazwiemy obj1 i obj2, ogólna struktura zapisu operatora nierówności prezentuje się następująco:

<obj1> != <obj2>
  • Wyrażenie to zwraca wartość True, jeśli obj1 i obj2 reprezentują różne wartości,
  • W przeciwnym wypadku, wynikiem będzie False.

Warto pamiętać, że obj1 i obj2 mogą być liczbami całkowitymi, zmiennoprzecinkowymi, sekwencjami znaków, listami oraz innymi strukturami danych.

Przykłady zastosowania operatora nierówności w Pythonie

W tej części artykułu przyjrzymy się praktycznym przykładom, aby lepiej zrozumieć, jak działa operator nierówności.

Porównywanie wartości za pomocą operatora nierówności

Oto pierwszy przykład, który posłuży nam jako ilustracja.

num1 = 27
num2 = 3*9

num1 != num2

# Wynik: False

Powyższy kod można uruchomić bezpośrednio w przeglądarce za pomocą np. newsblog.pl Python IDE. Możliwa jest także praca w środowisku lokalnym.

W związku z tym, że zmienna num1 przechowuje wartość 27, a num2 również wynosi 27 (3 * 9 = 27), ich wartości są identyczne. Dlatego zastosowanie operatora != daje w efekcie wartość False.

Rozważmy kolejny przypadek.

W poniższym kodzie num1 przyjmuje wartość 7, natomiast num2 jest łańcuchem znaków „7”. Ponieważ mamy do czynienia z różnymi typami danych, operator nierówności zwróci wartość True.

num1 = 7
num2 = "7"
num1 != num2

# Wynik: True

Konwertując łańcuch znaków na liczbę całkowitą, sytuacja ulega zmianie, co demonstruje poniższy fragment:

num1 = 7
num2 = int("7")

num1 != num2

# Wynik: False

W tym scenariuszu wynik wynosi False, ponieważ num1 i num2 reprezentują teraz tą samą wartość 7 jako liczbę całkowitą.

Operatora nierówności można też stosować z kolekcjami danych, takimi jak listy, krotki czy zbiory.

Warto zaznaczyć, że w przypadku zbiorów danych, takich jak listy, operator nierówności bada zawartość poszczególnych elementów. Przykładowo, dwie listy, nazwijmy je lista1 i lista2, o długości n, uznawane są za równe tylko wtedy, gdy lista1[i] == lista2[i] dla każdego i z zakresu od 0 do n-1.

Oto ilustracja:

list1 = [2,4,6,8]
list2 = [2,4,6,9]

list1 != list2

# Wynik: True

W powyższym przykładzie lista1 i lista2 różnią się tylko jednym elementem. Operator nierówności != zwraca wartość True, zgodnie z oczekiwaniem.

Zastosowanie operatora nierówności w instrukcjach warunkowych

Operator nierówności często wykorzystywany jest jako składnik warunków w instrukcjach sterujących w języku Python.

Poniższy przykład demonstruje, jak sprawdzić, czy dana liczba jest nieparzysta.

Liczba, która nie jest podzielna przez 2, jest liczbą nieparzystą. W kodzie warunek ten zapisuje się jako num % 2 != 0.

num = 7
if(num%2 != 0):
  print("Liczba jest nieparzysta.")
else:
  print("Liczba jest parzysta.")

# Wynik: Liczba jest nieparzysta.

Warunki można też stosować w konstrukcji list składanych (list comprehension), gdy chcemy wyselekcjonować z listy tylko te elementy, które spełniają określone kryterium. W przykładzie poniżej, zmienna nieparzyste_10 zawiera listę wszystkich liczb nieparzystych mniejszych niż 10.

odd = [num for num in range(10) if num%2 != 0]
print(odd)

# Wynik: [1, 3, 5, 7, 9]

To wyczerpuje temat operatora nierówności (!=). ✅

Jak łatwo można się domyślić, operator równości działa w sposób przeciwny do operatora nierówności.

Więcej szczegółów na ten temat znajdziesz w kolejnej sekcji.

Składnia operatora równości w Pythonie

Oto sposób użycia operatora równości w Pythonie:

<obj1> == <obj2>  #gdzie <obj1> i <obj2> to poprawne obiekty Python
  • Operator zwraca wartość True, jeśli obj1 i obj2 posiadają identyczne wartości.
  • W przeciwnym razie wynikiem jest False.

Przykłady kodu operatora równości w Pythonie

Operator równości (==) wykorzystuje się w bardzo podobny sposób jak operator nierówności.

Przeanalizujmy następujące scenariusze:

  • sprawdzanie, czy dwa łańcuchy znaków są identyczne,
  • weryfikacja, czy liczba jest parzysta,
  • wykorzystanie warunków warunkowych w listach składanych.

Porównywanie wartości za pomocą operatora równości

W poniższym fragmencie kodu, zmienne str1 i str2 przechowują identyczne wartości. W efekcie operator równości (==) zwraca wartość True.

str1 = "kodowanie"
str2 = "kodowanie"

str1 == str2

# Wynik: True

Operator równości w Pythonie

Teraz użyjmy operatora równości w instrukcji warunkowej.

Warto przypomnieć, że liczba podzielna przez 2 jest liczbą parzystą. W kodzie, warunek ten zapisujemy jako num % 2 == 0.

num = 10
if(num%2 == 0):
  print("Liczba jest parzysta.")
else:
  print("Liczba jest nieparzysta.")

# Wynik: Liczba jest parzysta.

Rozbudowując przykład, użyjemy list składanych, aby otrzymać wszystkie liczby parzyste mniejsze od 10.

even_10 = [num for num in range(10) if num%2 == 0]
print(even_10)

# Wynik: [0, 2, 4, 6, 8]

W powyższym przykładzie:

  • range(10) generuje sekwencję, po której można iterować, aby otrzymać wszystkie liczby całkowite od 0 do 9.
  • Warunek num%2 == 0 jest spełniony tylko dla liczb parzystych.
  • Zatem even_10 jest listą wszystkich liczb parzystych mniejszych od 10.

Dotychczas nauczyłeś się, jak sprawdzać równość za pomocą operatorów nierówności (!=) oraz równości (==).

W dalszej części dowiesz się, jak weryfikować tożsamość dwóch obiektów. Sprawdzisz, czy dwa obiekty Python są faktycznie tym samym obiektem w pamięci.

Jak korzystać z operatorów 'is’ oraz 'is not’ w Pythonie

Jeśli jesteś początkującym programistą Pythona, możesz mieć trudności z rozróżnieniem między operatorami == i is. Wyjaśnijmy to w tej sekcji.

W poprzednich sekcjach widzieliśmy przykład, gdzie zmienne str1 i str2 miały identyczne wartości, a operator == zwracał True.

Teraz, uruchommy następujący fragment kodu.

str1 = "kodowanie"
str2 = "kodowanie"

str1 is str2

# Wynik: False

Jak widać, wyrażenie str1 is str2 zwraca False.

Zastanówmy się, jak działa operator is w Pythonie.

Operator is działa na dowolnych dwóch obiektach Python i zwraca wartość True tylko wtedy, gdy obydwa obiekty są tym samym obiektem w pamięci.

Nawet jeśli str1 jest równe str2, str1 nie jest str2, ponieważ wskazują one na dwa różne obiekty w pamięci, a zatem mają różne tożsamości.

’==’ i 'is’ nie są tym samym

W Pythonie, funkcja id() pozwala na uzyskanie tożsamości obiektu.

▶ Uruchom poniższy kod, aby zobaczyć tożsamości zmiennych str1 i str2.

id(str1)

# Przykładowy wynik: 139935398870320

id(str2)

# Przykładowy wynik: 139935398871344

Jak widać, zmienne str1 i str2 mają różne tożsamości. Dlatego str1 is str2 zwraca False, zgodnie z oczekiwaniami.

Podsumowując:

<obj1> is <obj2> # zwraca True tylko wtedy, gdy
id(<obj1>) == id(<obj2>) # zwraca True

Sprawdźmy to na szybko, jak poniżej:

str1 = "kodowanie"
str2 = str1

print(str1 is str2)
print(id(str1) == id(str2))

# Wynik
True
True

Operator is not działa w sposób odwrotny do operatora is.

Operator is not, podobnie jak is, operuje na dwóch dowolnych obiektach Pythona. Zwraca False jedynie wtedy, gdy oba obiekty są identyczne, czyli odnoszą się do tego samego miejsca w pamięci. W pozostałych przypadkach wynikiem jest True.

W poprzednich przykładach spróbuj zamienić operator is na is not i sprawdź wyniki.

Podsumowanie 👩‍💻

Mam nadzieję, że ten poradnik okazał się dla Ciebie pomocny.

Podsumowując, nauczyłeś się:

  • Jak wykorzystywać operatory równości (==) oraz nierówności (!=) do weryfikowania, czy dwa obiekty Pythona mają takie same wartości.
  • Jaka jest różnica między równością a tożsamością obiektów w Pythonie.
  • W jaki sposób operatory is oraz is not pomagają w sprawdzeniu, czy dwa obiekty są tym samym obiektem w pamięci.

Zapraszam do zapoznania się z materiałami na temat obliczania różnicy czasu lub tworzenia gry w węża w Pythonie.

Do zobaczenia w kolejnych materiałach. Życzę udanej nauki i kodowania!🎉