【发布时间】:2019-12-26 23:31:09
【问题描述】:
这是一个示例代码,
def func():
return something
# I want to break the list comprehension at the first None.
# The walrus := is valid in Python 3.8
items = [r for _ in range(100) if (r := func()) is not None]
# else break?
我想知道是否有可能用任何方法(例如 takewhile 或其他方法)打破列表理解?
【问题讨论】:
-
这样的?
[z for z in takewhile(lambda x:x<3,[1,2,3,4,5])](使用来自itertools的takewhile) -
@ScottHunter 在这一点上,没有什么理由使用列表推导而不是直接将
takewhile实例传递给list。 -
@chepner:我没说这是个好主意……
-
@ScottHunter 您的示例确实可以破坏它,但我想通过一些函数返回而不是 range(100) 来破坏它