Python: 在条件为真之前向列表添加项
普通的列表推导式是这样使用的:
new_list = [f(x) for x in l]
在Python中,有什么最简洁、最易读的方法来创建一个新的列表,类似于这个:
new_list = [f(x) while condition is True]
3 个回答
1
我可能会把它放在一个生成器函数里:
def generate_items():
while condition:
yield f(x)
new_list = list(generate_items)
8
使用 itertools 库:
import itertools as it
new_list = map(f, it.takewhile(condition, l))
这和下面的代码是一样的:
new_list = [f(x) for x in it.takewhile(lambda x: condition(x), l)]
12
保持简单:
new_list = []
while condition:
new_list.append(f(x))
如果把代码写成单一的表达式会让人看不懂,那就没必要这样做,分开写成几条语句会更清晰。