当前位置:  开发笔记 > 编程语言 > 正文

Python itertools-takewhile():多个谓词

如何解决《Pythonitertools-takewhile():多个谓词》经验,为你挑选了1个好方法。

假设一个发生器逐个产生以下元组(从左到右)

(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).)



1> Ahsanul Haqu..:

您可以使用索引访问每个元组的元素.

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

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有