Python: 在条件为真之前向列表添加项

9 投票
3 回答
17401 浏览
提问于 2025-04-16 16:58

普通的列表推导式是这样使用的:

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))

如果把代码写成单一的表达式会让人看不懂,那就没必要这样做,分开写成几条语句会更清晰。

撰写回答