首页 > 解决方案 > 如何在python中将iterable转换为bool?

问题描述

如何在python中将可迭代转换为布尔值?

from itertools import repeat
t = repeat(True)
f = repeat(False)

# Expect True, actual: True.
print(bool(t))

# Expect infinity loop or False,
# actual: True.
print(bool(f))

标签: python-3.x

解决方案


您必须了解itertools.repeat(). 该函数返回一个生成器。所以在你的情况下可能有无限数量的布尔值。为了更容易,您可以将该生成器转换为列表。

让我们说[真,假,真]。现在您想知道与该列表关联的布尔值。但现在你必须做出决定。all()如果值为 True 或仅当any()列表中的值为 True时,您想返回True 吗?你可以通过all([True, False, True])

好的,让我们回到您的生成器和 itertools.repeat()。由于repeat() 总是重复第一个值,所以你必须有这样的列表[True, True, True]。因此,您可以只向生成器询问该next()值,因为所有以后的值都是相同的。由于您已经生成了布尔值生成器,因此返回的值已经是布尔值,因此不需要bool()

from itertools import repeat
t = repeat(True)
f = repeat(False)

next(t)
# True
next(f)
# False

推荐阅读