python - 除了“全部”之外,还有其他方法可以检查我的目标元素之前的所有元素值是否为真?
问题描述
如果只有所有先前的元素在当前位置为真,我试图返回真。
我已经设置了all
功能,但我不想这样编码
def check(lightsOnOff, light):
for light in lights[:light]:
if not on:
return False
return True
count = count + 1
解决方案
一般来说all
,这是一个有用的构造,我可以看到为什么它在这个表达式中看起来不对
all(list(lightsOnOff.values())[:light])
但臭的部分实际上是list(iterable)[:number]
构造,它强制构造整个列表然后截断它。
重要的是,如果lightsOnOff
是 a dict
(不是例如 an OrderedDict
),您的代码将是不确定的(请参阅底部的注释)。
如果您不想创建列表并对其进行切片,则可以利用 itertools:
from itertools import islince
...
all(islice(lightsOnOff.values(), n))
作为一个框架挑战,如果您的 dict 有一个命令并且您知道键,您可以简单地将其重写为:
all(lightsOnOff[k] for k in keys[:light])
如果你的字典有有序的键,例如整数,只使用一个列表?
all(listOfLights[:light])
推荐阅读
- python - 使用 FuncAnimation 为 Seaborn 气泡图制作动画
- python - 如何在 Python 中打开名称中包含或以 # 开头的模块?
- twilio - 验证在 Twilio 中收到的 SMS 来自真实手机,而不是欺骗性的 POST 请求
- javascript - 是否可以在 JSON 文件中保留某些内容?(不和谐.JS)
- html - 将 div 彼此对齐,一个与 img
- c - 为 SIGTSTP 信号配置处理程序以显示消息但不终止当前进程
- windows - 我不能用 python 播放音频
- android - 当我按下返回时,如何刷新 recylverview 项目?
- javascript - jquery在单击时将1添加到变量然后插入到数据库
- c - 删除字符串数组中的空格并计算空格 C