Jak používat Python nerovné a rovné operátory

Porovnávání hodnot v Pythonu: operátory rovnosti a nerovnosti

V programovacím jazyce Python se k porovnávání, zda mají dva objekty shodnou hodnotu, používají operátory pro rovnost a nerovnost. Tento článek vás provede používáním těchto operátorů na mnoha příkladech.

V tomto tutoriálu se podíváme na:

  • Syntaxi operátoru nerovnosti (!=) a situace, ve kterých se používá.
  • Syntaxi operátoru rovnosti (==) doplněnou o praktické ukázky.
  • Použití operátorů „is“ a „is not“ k určení, zda dva objekty v Pythonu jsou totožné.

Pojďme začít.

Operátor nerovnosti v Pythonu: syntaxe

Pro libovolné dva objekty v Pythonu, označené jako obj1 a obj2, vypadá syntaxe operátoru nerovnosti takto:

<obj1> != <obj2>
  • Výraz vrací True, pokud se hodnoty obj1 a obj2 liší.
  • V opačném případě vrací False.

Poznámka: Jak už bylo zmíněno, obj1 a obj2 mohou být celá čísla, čísla s plovoucí desetinnou čárkou, textové řetězce, seznamy atd.

Praktické příklady operátoru nerovnosti

Nyní si na příkladech ukážeme, jak tento operátor funguje.

Porovnávání hodnot pomocí operátoru nerovnosti

Podívejme se na první příklad.

num1 = 27
num2 = 3 * 9

num1 != num2

# Výstup: False

Kódové ukázky lze spouštět přímo v prohlížeči na stránkách etechblog.cz Python IDE. Můžete si ale zvolit i spuštění kódu na vašem počítači.

Vzhledem k tomu, že num1 je 27 a num2 je také 27 (protože 3 * 9 = 27), jsou hodnoty obou proměnných stejné. Proto operátor != vrátí False.

Další příklad:

V tomto kódu je num1 nastaveno na hodnotu 7 a num2 je řetězec „7“. Protože jde o rozdílné datové typy, operátor nerovnosti vrací True.

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

# Výstup: True

Pokud chceme převést řetězec na celé číslo, můžeme to udělat takto:

num1 = 7
num2 = int("7")

num1 != num2

# Výstup: False

V tomto případě vidíme, že operátor vrací False, protože num1 a num2 mají nyní stejnou číselnou hodnotu 7.

Operátor nerovnosti lze také použít s kolekcemi dat, jako jsou seznamy, n-tice a množiny.

Důležité: Při porovnávání kolekcí operátor nerovnosti porovnává jednotlivé prvky. Například dva seznamy seznam1 a seznam2 o délce n jsou považovány za různé, pokud existuje alespoň jeden index i, pro který seznam1[i] != seznam2[i] platí.

Zde je příklad:

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

list1 != list2

# Výstup: True

V uvedeném příkladu se seznam1 a seznam2 liší pouze jedním prvkem, takže operátor != správně vrací True.

Operátor nerovnosti v podmíněných výrazech

Operátor nerovnosti se často používá v podmínkách. Například můžeme zjistit, zda je číslo liché.

Číslo, které není dělitelné dvěma, je liché. Tuto podmínku můžeme ověřit pomocí num % 2 != 0.

num = 7
if(num % 2 != 0):
  print("Číslo je liché.")
else:
  print("Číslo je sudé.")

# Výstup: Číslo je liché.

Podmínky můžeme využít i v konstrukci list comprehension pro výběr prvků splňujících určité kritérium. V následujícím příkladu je liche seznam všech lichých čísel menších než 10.

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

# Výstup: [1, 3, 5, 7, 9]

Tím uzavíráme část o operátoru nerovnosti !=. ✅

Jak jste možná uhodli, operátor rovnosti funguje opačně.

Více se o něm dozvíme v další kapitole.

Operátor rovnosti v Pythonu: syntaxe

Syntaxe operátoru rovnosti je následující:

<obj1> == <obj2>
  • Operátor vrací True, pokud mají obj1 a obj2 stejnou hodnotu.
  • V opačném případě vrací False.

Praktické příklady operátoru rovnosti

Operátor == se používá velmi podobně jako operátor !=. Podívejme se na příklady:

  • Jak porovnat dva textové řetězce.
  • Jak zjistit, zda je číslo sudé.
  • Jak použít podmínky v list comprehension.

Porovnávání hodnot pomocí operátoru rovnosti

V následujícím kódu mají str1 a str2 stejnou hodnotu, proto operátor == vrátí True.

str1 = "programování"
str2 = "programování"

str1 == str2

# Výstup: True

Nyní si ukážeme použití operátoru rovnosti v podmínce.

Důležité: Číslo, které je beze zbytku dělitelné dvěma, je sudé. V kódu to odpovídá podmínce num % 2 == 0.

num = 10
if(num % 2 == 0):
    print("Číslo je sudé.")
else:
    print("Číslo je liché.")

# Výstup: Číslo je sudé.

Použijme nyní list comprehension, abychom získali seznam všech sudých čísel menších než 10.

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

# Výstup: [0, 2, 4, 6, 8]

V tomto příkladu:

  • range(10) vrací sekvenci čísel od 0 do 9.
  • Podmínka num % 2 == 0 je splněna pouze pro sudá čísla.
  • Proměnná suda_10 tak obsahuje seznam všech sudých čísel menších než 10.

Nyní už umíte ověřovat rovnost pomocí operátorů != a ==.

V další sekci se naučíte, jak kontrolovat identitu objektů. Tedy ověřovat, zda se jedná o ten samý objekt v paměti.

Operátory „is“ a „is not“ v Pythonu

Pokud s Pythonem teprve začínáte, může být rozdíl mezi operátory == a is matoucí. V této kapitole si to objasníme.

V předchozím příkladu jsme viděli, že str1 a str2 mají stejnou hodnotu a operátor == vrátil True.

Nyní ale spusťte následující kód.

str1 = "programování"
str2 = "programování"

str1 is str2

# Výstup: False

Vidíme, že výraz str1 is str2 vrací False.

Vysvětleme si, jak funguje operátor is.

Operátor is porovnává dva objekty a vrací True pouze pokud jsou tyto objekty totožné, tedy pokud odkazují na stejné místo v paměti.

Ačkoli str1 a str2 mají stejnou hodnotu, nejsou totožné, protože odkazují na dvě různá místa v paměti, a mají proto rozdílnou identitu.

Důležité: == a is nejsou totéž!

V Pythonu se dá získat identita objektu pomocí funkce id().

▶ Spuštěním následujícího kódu získáte identitu str1 a str2.

id(str1)

# Příklad výstupu: 139935398870320

id(str2)

# Příklad výstupu: 139935398871344

Jak vidíme, str1 a str2 mají odlišné identity. Proto str1 is str2 vrací False.

Shrnuto:

<obj1> is <obj2> # vrací True pokud a pouze pokud
id(<obj1>) == id(<obj2>) # vrací True

Rychle si to ověříme:

str1 = "programování"
str2 = str1

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

# Výstup
True
True

Operátor is not je opakem operátoru is. Vrací False pouze, pokud dva objekty jsou totožné. V opačném případě vrací True.

V předchozích příkladech si zkuste nahradit is za is not a podívejte se, jak se změní výsledek.

Závěr 👩‍💻

Doufám, že vám tento návod pomohl pochopit porovnávání hodnot v Pythonu.

V tomto tutoriálu jste se naučili:

  • používat operátory rovnosti (==) a nerovnosti (!=) pro porovnávání hodnot objektů.
  • rozdíl mezi rovností hodnot a identitou objektů.
  • jak operátory is a is not slouží k ověření totožnosti objektů.

Můžete si také přečíst, jak vypočítat časový rozdíl nebo jak vytvořit hru hada v Pythonu.

Uvidíme se v dalším tutoriálu. Do té doby vám přeji příjemné učení a kódování! 🎉