Python itertools—takewhile() : multiple predicates

标签 python python-3.x

假设一个生成器一个一个地生成下面的元组(从左到右)

(1, 2, 3), (2, 5, 6), (3, 7, 10), (4, 5, 11), (3, 5, 15), (4, 5, 9), (4, 6, 12)
...

并假设只要谓词为真,我就想进行迭代。令该谓词为 sum(yielded_value) < 20 .然后迭代器将停止 (3, 5, 15) .我可以做到,说:

list(itertools.takewhile(lambda x: sum(x) < 20, some_generator()))

问题,如何写一个带有两个谓词的相似表达式?假设我想要:

list(itertools.takewhile(lambda x: sum(x) < 20 and first_value_of_tuple > 3, some_generator()))

(在这种情况下,停止 (4, 6, 12)。)

最佳答案

您可以通过索引访问每个元组的元素。

list(itertools.takewhile(lambda x: sum(x) < 20 and x[0] > 3, some_generator()))

关于Python itertools—takewhile() : multiple predicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187448/

相关文章:

python-3.x - 如何从文件中解码 utf-8

python - 字典问题(TypeError : string indices must be integers)

python - 列表框中的重复单词

python - 如何在某个字符后停止读取输入?

python - 如何删除不需要的阈值扩展?

python - 重命名 Excel 选项卡

python - python3 上的 FileNotFoundError,即使文件确实存在

python - 如何计算自上次事件==1以来的天数?

python - Django Forms - 动态选择字段过滤

python - 如何在Python3中使用opencv从文件缓冲区中读取文件