`bool` в выражении генератора в python - PullRequest
0 голосов
/ 25 сентября 2019

Хотите понять значение bool для выражения генератора в python.

bool(x for x in []) выходов True

bool(x for x in [1, 2, 3]) выходов True

bool(range(0)) доходность False (??)

bool(range(3)) доходность True

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Путаница возникает из-за того, что range не возвращает генератор.

Обычно генераторы - это просто объекты, и поэтому они всегда правдивы (в отличие от контейнеров, которые False в пустом состоянии).

Если вы сделаете type(range(0)), вы получите «диапазон», но это не генератор, и, очевидно, имеет неявное значение истинности, когда оно пусто, а не пусто.

0 голосов
/ 25 сентября 2019

bool возвращает true для «истинных» значений и false для «ложных» значений.

Случай 1:

(x for x in [])

Создает объект генератора.

Выход:

<generator object <genexpr> at 0x03DCDEF0>

Поскольку объект сгенерирован, его Истина и он возвращает Истину.

Случай 2:

(x for x in [1, 2, 3])

То же, что и выше

Случай 3:

(range(0))

Это просто диапазон (0, 0).

Попробуйте это:

for i in range(0): print(i)

Не будет никакого вывода.

Вы не получите никакого значения, которое равно Falsy и False возвращается.

Случай 4:

(range(3))

Попробуйте это:

for i in range(3): print(i)

Выход:

0
1
2

Значениявозвращаются, что означает его истинность, и возвращается True.

Подробнее о Проверка истинности значения

...