Булевы значения как 0 и 1
True — это единица, False — ноль
В Python bool — это подвид целых чисел. Булевы значения можно складывать, умножать и передавать в sum:
PYTHON-КОД
1 2 3 4
Из этого вырастает главный практический приём: сумма условий — это количество выполнившихся условий.
Подсчёт одной строкой
PYTHON-КОД
1 2 3
Каждое сравнение даёт True или False, то есть 1 или 0, а sum их складывает. Запись sum(1 for x in a if x % 2 == 0) делает ровно то же самое — выбирай ту, которая понятнее.
| Задача | Короткая запись |
|---|---|
| сколько чётных | sum(x % 2 == 0 for x in a) |
| сколько букв «А» в строке | sum(c == "A" for c in s) |
| сколько строк длиннее 10 | sum(len(w) > 10 for w in words) |
| есть ли хоть один нулевой | any(x == 0 for x in a) |
| все ли положительные | all(x > 0 for x in a) |
Что считается истиной, а что ложью
| Значение | Как воспринимается в условии |
|---|---|
| 0, 0.0 | ложь |
| пустая строка "" | ложь |
| пустой список [], словарь {} | ложь |
| None | ложь |
| любое ненулевое число | истина |
| непустая строка, в том числе "0" | истина |
Отсюда короткие проверки: if a: означает «список не пуст», if not s: — «строка пустая».
