使用函数来提升
StopIteration
和
list
要抓住它:
>>> def end_of_loop():
... raise StopIteration
...
>>> even = list(end_of_loop() if n == 412 else n for n in numbers if 0 == n % 2)
>>> print(even)
[402, 984, 360, 408, 980, 544, 390, 984, 592, 236, 942, 386, 462, 418, 344, 236, 566, 978, 328, 162, 758, 918]
对于那些抱怨的人来说,这不是一句空话:
even = list(next(iter(())) if n == 412 else n for n in numbers if 0 == n % 2)
对于那些抱怨它是黑客的,不应该在生产代码中使用:嗯,你是对的。
一定地。