Python 3.x 如何在python中将iterable转换为bool?
如何在python中将iterable转换为boolPython 3.x 如何在python中将iterable转换为bool?,python-3.x,Python 3.x,如何在python中将iterable转换为bool 从itertools导入重复 t=重复(真) f=重复(错误) #期望真实,实际:真实。 打印(bool(t)) #期望无穷循环或False, #事实:是的。 印刷品(bool(f)) 您必须了解itertools.repeat()中发生了什么。。该函数返回一个生成器。所以在你的例子中,可能有无穷多的布尔数。为了简化,您可以将生成器转换为列表 让我们说[真,假,真]。现在您想知道与该列表关联的布尔值。但现在你必须做出决定。如果all()值为T
从itertools导入重复
t=重复(真)
f=重复(错误)
#期望真实,实际:真实。
打印(bool(t))
#期望无穷循环或False,
#事实:是的。
印刷品(bool(f))
您必须了解itertools.repeat()中发生了什么。
。该函数返回一个生成器。所以在你的例子中,可能有无穷多的布尔数。为了简化,您可以将生成器转换为列表
让我们说[真,假,真]。现在您想知道与该列表关联的布尔值。但现在你必须做出决定。如果all()
值为True,您想返回True,还是仅当列表中的any()
值为True时才返回True?您可以通过all([True,False,True])
好的,让我们回到生成器和itertools.reapeat()。因为repeat()总是重复第一个值,所以基本上会有这样的列表[True,True,True]。因此,您可以向生成器请求next()
值,因为后面的所有值都是相同的。由于您已经生成了布尔值生成器,因此返回的值已经是布尔值,因此不需要bool()
谢谢
any
和all
是我需要的
from itertools import repeat
t = repeat(True)
f = repeat(False)
next(t)
# True
next(f)
# False