Як використовувати оператори Python Not Equal і Equal

У мові програмування Python для перевірки, чи мають два об’єкти однакові значення, використовуються оператори “не дорівнює” та “дорівнює”. У цьому посібнику ми розглянемо їх застосування з детальними прикладами.

Ви ознайомитесь із:

  • синтаксисом оператора нерівності (!=) та його використанням;
  • синтаксисом оператора рівності (==) з наочними прикладами;
  • застосуванням операторів is та is not для визначення ідентичності двох об’єктів Python.

Розпочнімо!

Оператор “не дорівнює” в Python: синтаксис

Для будь-яких двох об’єктів Python, obj1 та obj2, загальний синтаксис використання оператора нерівності виглядає так:

<obj1> != <obj2>
  • Результатом буде True, якщо значення obj1 та obj2 не збігаються;
  • і False в іншому випадку.

Зауважте, що obj1 і obj2 можуть представляти собою цілі числа, числа з плаваючою комою, рядки, списки та інші типи даних.

Приклади використання оператора “не дорівнює”

Розглянемо декілька прикладів, щоб глибше зрозуміти роботу оператора нерівності.

Порівняння з оператором “не дорівнює”

Ось перший приклад:

num1 = 27
num2 = 3 * 9

num1 != num2

# Результат: False

Ви можете виконувати ці приклади безпосередньо в онлайн IDE Python, або ж локально.

Оскільки num1 дорівнює 27, а num2 також дорівнює 27 (3 * 9 = 27), значення num1 та num2 збігаються. Тому оператор != повертає False.

Розглянемо інший випадок.

У наступному прикладі num1 має значення 7, а num2 – рядкове представлення числа 7. Оскільки вони належать до різних типів даних, оператор нерівності поверне True.

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

# Результат: True

Якщо перетворити рядок на ціле число, отримаємо:

num1 = 7
num2 = int("7")

num1 != num2

# Результат: False

Тепер ви бачите, що результат є False, оскільки num1 і num2 обидва представляють ціле число 7.

Оператор нерівності також можна використовувати з колекціями даних Python, такими як списки, кортежі та множини.

Важливо: Для колекцій, наприклад, списків, оператор != перевіряє значення кожного елемента. Тобто два списки, list1 і list2, довжиною n, вважаються рівними лише за умови, що list1[i] == list2[i] для всіх i у діапазоні від 0 до n-1.

Ось приклад:

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

list1 != list2

# Результат: True

У цьому прикладі list1 і list2 відрізняються лише одним елементом. Тому оператор != повертає True, що є очікуваним результатом.

Використання оператора “не дорівнює” в умовних виразах

Оператор “не дорівнює” часто застосовується в умовних виразах Python.

Наприклад, код нижче показує, як перевірити, чи є число непарним.

Число вважається непарним, якщо воно не ділиться на 2 без остачі. Це можна перевірити за допомогою умови num % 2 != 0.

num = 7
if (num % 2 != 0):
  print("Число є непарним.")
else:
  print("Число є парним.")

# Результат: Число є непарним.

Умови також можна застосовувати у генераторах списків, коли потрібно зберегти лише ті елементи, які відповідають певним критеріям. У наступному прикладі odd_10 – це список всіх непарних чисел менших за 10.

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

# Результат: [1, 3, 5, 7, 9]

На цьому розгляд оператора нерівності (!=) завершено. ✅

Оператор “дорівнює”, як ви вже, напевно, здогадалися, виконує протилежну функцію.

Далі ми поговоримо про нього детальніше.

Оператор “дорівнює” в Python: синтаксис

Синтаксис використання оператора рівності в Python виглядає наступним чином:

<obj1> == <obj2>  #де <obj1> і <obj2> - дійсні об'єкти Python
  • Оператор повертає True, якщо значення obj1 і obj2 є ідентичними,
  • інакше повертає False.

Приклади використання оператора “дорівнює”

Оператор рівності (==) використовується аналогічно до оператора нерівності.

Розглянемо наступні приклади:

  • перевірка на рівність двох рядків;
  • перевірка, чи є число парним;
  • застосування в умовних виразах при генерації списків.

Порівняння з оператором “дорівнює”

У наведеному нижче прикладі рядки str1 і str2 ідентичні за своїм значенням, тому оператор рівності (==) повертає True.

str1 = "coding"
str2 = "coding"

str1 == str2

# Результат: True

Давайте тепер використаємо оператор рівності в умовному виразі.

Зауважте, що число, яке ділиться на 2 без остачі, є парним. У коді це зводиться до умови num % 2 == 0.

num = 10
if (num % 2 == 0):
  print("Число є парним.")
else:
  print("Число є непарним.")

# Результат: Число є парним.

Тепер застосуємо генератор списків Python для отримання всіх парних чисел, менших за 10.

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

# Результат: [0, 2, 4, 6, 8]

У цьому прикладі:

  • range(10) повертає об’єкт діапазону, що дозволяє отримати усі цілі числа від 0 до 9.
  • Умова num % 2 == 0 є істинною тільки для парних чисел.
  • Таким чином, even_10 є списком усіх парних чисел менших за 10.

Наразі ви навчилися перевіряти рівність за допомогою операторів “не дорівнює” (!=) та “дорівнює” (==).

Далі ви дізнаєтеся, як перевірити ідентичність двох об’єктів Python.

Як використовувати оператори is та is not у Python

Якщо ви новачок у програмуванні на Python, вас може збентежити різниця між операторами == та is. Розберемо це у цьому розділі.

У попередньому розділі ми бачили приклад, де str1 і str2 були рівними, і оператор == повертав True.

Тепер виконайте наступний код.

str1 = "coding"
str2 = "coding"

str1 is str2

# Результат: False

Як бачите, вираз str1 is str2 повертає False.

З’ясуємо, що саме робить оператор is у Python.

Оператор is застосовується до будь-яких двох об’єктів Python.
Він повертає True, тільки якщо два об’єкти ідентичні, тобто вони посилаються на один і той самий об’єкт у пам’яті.

Незважаючи на те, що str1 дорівнює str2, вираз str1 is str2 повертає False, оскільки вони посилаються на два різні об’єкти в пам’яті. Тому вони мають різні ідентичності.

У Python для отримання ідентифікатора об’єкта можна використовувати функцію id().

▶ Виконайте наступний код для отримання ідентифікаторів str1 і str2.

id(str1)

# Приклад результату: 139935398870320

id(str2)

# Приклад результату: 139935398871344

Як бачимо, str1 та str2 мають різні ідентифікатори. Тому вираз str1 is str2 повертає False.

Отже:

<obj1> is <obj2> # повертає True, якщо і тільки якщо
id(<obj1>) == id(<obj2>) # повертає True

Перевіримо це:

str1 = "coding"
str2 = str1

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

# Результат
True
True

Інтуїтивно зрозуміло, що оператор is not є протилежним до оператора is.

Оператор is not застосовується до будь-яких двох об’єктів Python.
Він повертає False лише в тому випадку, коли два об’єкти ідентичні, тобто вони посилаються на той самий об’єкт у пам’яті. В інших випадках він повертає True.

У наведених вище прикладах спробуйте замінити is на is not і перевірити результати.

Висновок 👩‍💻

Сподіваюся, цей посібник був корисним для вас.

Підсумуємо, ви дізналися:

  • як використовувати оператори “дорівнює” (==) та “не дорівнює” (!=) для перевірки, чи мають два об’єкти Python однакові значення;
  • різницю між рівністю та ідентичністю об’єктів Python;
  • як оператори is та is not допомагають перевірити ідентичність двох об’єктів Python.

Дізнайтеся, як розрахувати різницю в часі або створити гру «змійка» на Python тут.

До зустрічі у наступних посібниках. Насолоджуйтеся навчанням та програмуванням! 🎉