Тип нуля в языке Python
Основное: тип числа 0
В Python литерал 0 имеет тип int (целое число). Это подтверждается функцией type():
print(type(0))значение bool python (значение bool в python)
<class 'int'>
длина переменной python (длина числа и переменной в python)
Ноль является полноценным представителем целочисленного типа: он участвует в арифметических, битовых и логических операциях, а также преобразуется в другие типы данных.
Как проверить, что значение равно нулю?
Для сравнения используется оператор ==. Пример:
x = 0
if x == 0:
print("x равен нулю")Python максимальное целое число (максимальное целое число в python)
Оператор is не рекомендуется, так как он сравнивает идентичность объектов. Хотя для малых целых чисел Python кэширует объекты, это поведение не гарантируется.
is 0 может дать ложный результат при работе с большими числами или в разных реализациях Python.Как преобразовать 0 в другие типы?
Функции преобразования:
print(str(0))
print(float(0))
print(bool(0))
print(complex(0))Python list dict str str (список словарей со строковыми ключами в python)
0 0.0 False 0j
оператор float python (оператор float в python)
Особенность: bool(0) возвращает False, что важно в условных выражениях.
Как использовать 0 в математических операциях?
Ноль ведёт себя как обычно: сложение не меняет число, умножение обнуляет, деление на ноль вызывает исключение.
print(5 + 0)
print(5 * 0)
print(5 - 0)
print(5 ** 0) # степень
print(0 ** 5) # 0 в положительной степениType 0 python (тип 0 в python)
5 0 5 1 0
S type python (тип s в python)
ZeroDivisionError. Всегда проверяйте делитель.Как отличить целый ноль от нуля с плавающей точкой?
Литерал 0.0 - это float. Сравнение 0 == 0.0 даёт True, но типы разные.
print(type(0.0))
print(0 == 0.0)
print(0 is 0.0) # Falseтип элемента python (тип элемента в python)
<class 'float'> True False
Code typing python (примеры кода с модулем typing в python)
Как использовать 0 в логических выражениях?
Ноль считается ложным значением. В условии if 0: блок не выполняется.
if 0:
print("никогда")
else:
print("ноль -- это False")целое положительное число python (целое положительное число)
ноль -- это False
Int python значения (целочисленные значения (int) в python)
Это удобно для проверки пустых коллекций: if not len(items):.
Как работает 0 в строковом формате?
При форматировании чисел ноль может дополняться ведущими нулями.
print(f"{0:05d}")Set str python (множество из строки в python)
00000
Расширенные примеры работы с нулём
Битовые операции с нулём
print(f"0 & 1 = {0 & 1}")
print(f"0 | 1 = {0 | 1}")
print(f"0 ^ 1 = {0 ^ 1}")
print(f"~0 = {~0}")
print(f"0 << 2 = {0 << 2}")
print(f"0 >> 1 = {0 >> 1}")
0 & 1 = 0 0 | 1 = 1 0 ^ 1 = 1 ~0 = -1 0 << 2 = 0 0 >> 1 = 0
Ноль обнуляет разряды при AND, не влияет при OR и XOR, а сдвиги дают ноль.
Использование нуля в списках и итерациях
# Список из пяти нулей
zeros = [0] * 5
print(zeros)
# Индексация списка начинается с 0
print(zeros[0])
# Слайсинг с нулём: вставка в начало
lst = [1, 2, 3]
lst[0:0] = [0]
print(lst)
[0, 0, 0, 0, 0] 0 [0, 1, 2, 3]
Ноль как начальное значение аккумулятора
# Суммирование с начальным нулём
numbers = [5, 7, 2]
total = 0
for n in numbers:
total += n
print(total)
# Использование reduce с начальным значением
from functools import reduce
print(reduce(lambda a, b: a + b, numbers, 0))
14 14
Математические функции и ноль
import math
print(f"sin(0) = {math.sin(0)}")
print(f"cos(0) = {math.cos(0)}")
print(f"exp(0) = {math.exp(0)}")
print(f"log(1) = {math.log(1)}")
# log(0) вызывает ошибку
try:
math.log(0)
except ValueError as e:
print(f"Ошибка log(0): {e}")
# Проверка близости нуля
print(math.isclose(0, 0.0))
sin(0) = 0.0 cos(0) = 1.0 exp(0) = 1.0 log(1) = 0.0 Ошибка log(0): math domain error True
Ноль в форматировании чисел
# Двоичное представление
print(format(0, 'b')) # пустая строка? нет, '0'
print(f"{0:08b}")
# Шестнадцатеричное
print(f"{0:x}")
# Заполнение нулями для float
print(f"{0:010.3f}")
0 00000000 0 0000000.000
Проверка на ноль в коллекциях
# defaultdict со значением по умолчанию 0
from collections import defaultdict
d = defaultdict(int)
d['a'] += 1
print(d['a'], d['b'])
# Counter также использует 0 по умолчанию
from collections import Counter
c = Counter()
c.update(['a', 'b', 'a'])
print(c['a'], c['c'])
1 0 2 0
Ноль в NumPy (кратко)
import numpy as np
arr = np.array([0, 0.0, 1])
print(arr.dtype)
# Проверка близости
print(np.isclose(0, 0.0))
# Создание массива нулей
zeros = np.zeros((2, 3))
print(zeros)
float64 True [[0. 0. 0.] [0. 0. 0.]]