我可以在列表推导式/生成器表达式中使用 if
和 for
关键字,如下:
list(i for i in range(100) if i*i < 30)
我知道这并不是最有效率的方法,但请容忍我,因为条件可能更加复杂,这只是一个示例。然而,这仍然需要进行数百次迭代,而且只在前6次迭代中产生一个值。是否有一种方法可以告诉生成器表达式何时停止,例如:
list(i for i in range(100) while i*i < 30)
然而,在生成器表达式中无法理解while
。因此,我的问题是,如何编写带有停止条件的生成器表达式,以便即使它不生成新值,也不会继续计算。
[i for i in range(100)]
生成列表。 - Joril