我可以在列表解析/發電機表達式中使用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 2011-03-31 20:29:25
生成一個列表。奇怪的是,有[PEP3142](https://www.python.org/dev/peps/ pep-3142 /)在詢問這個問題時打開。給出的用例幾乎就是這一個。 Guido在2013年5月加入了它 – 2015-08-28 07:12:23