python-3.x - 如何在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))
解决方案
您必须了解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
推荐阅读
- r - 如何使用 R 中的 inner_join、dplyr 将两个数据帧连接到 2 列,这些列应该同时匹配?
- postgresql - 我应该在固定长度的 bytea PK 列上设置 STORAGE PLAIN 吗?
- node.js - MongoDB如何限制每个组/类别/条件的结果?
- python - 验证熊猫中的水平行数据
- r - 如何克服 NextMethod(.Generic) 中的错误:无法将“tsp”分配给零长度向量
- python - 在使用 for 循环时编写 Excel 文件
- javascript - 在 React 应用程序中通过 Axios 处理多个 API
- react-native - Expo (React-native) - 适用于托管工作流程的 AdMob 替代方案
- java - 动态管理在 Wildfly 上部署和爆炸的 EAR
- opencv-python - 删除opencv中未连接的小斑点