gpt4 book ai didi

python - 在列表推导或生成器表达式中使用 while

转载 作者:IT老高 更新时间:2023-10-28 20:51:32 25 4
gpt4 key购买 nike

我可以在列表推导/生成器表达式中使用 iffor 作为

list(i for i in range(100) if i*i < 30)

我知道这不是最有效的,但请耐心等待,因为情况可能要复杂得多,这只是一个示例。但是,这仍然要经过一百次迭代,并且只在前 6 次中产生一个值。有没有办法告诉生成器表达式在哪里停止,如下所示:

list(i for i in range(100) while i*i < 30)

但是,while 在生成器表达式中不被理解。所以,我的问题是,我如何编写一个带有停止条件的生成器表达式,以便它不会继续计算,即使它不会产生新值。

最佳答案

因为 takewhile()dropwhile() 的语法不是最清晰的,下面是你问题的实际例子:

>>> [i for i in itertools.takewhile(lambda x: x*x<30, range(10))]
[0, 1, 2, 3, 4, 5]
>>> [i for i in itertools.dropwhile(lambda x: x*x<30, range(10))]
[6, 7, 8, 9]

知道itertools的作者has questioned是否弃用这些函数。

关于python - 在列表推导或生成器表达式中使用 while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com