Python:将条目添加到列表,直到条件为真

时间:2011-05-04 12:21:07

标签: list python

正常的列表理解以这种方式出现:

new_list = [f(x) for x in l]

在Python中创建新列表的最简洁和可读方式是什么,类似于:

new_list = [f(x) while condition is True]

3 个答案:

答案 0 :(得分:12)

保持简单:

new_list = []
while condition:
    new_list.append(f(x))

当将某些内容写成单独的语句时,将某些内容强制转换为单个表达式没有任何好处。

答案 1 :(得分:7)

使用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)]

答案 2 :(得分:0)

我可能会把它包装在一个生成器函数中:

def generate_items():
    while condition:
        yield f(x)
new_list = list(generate_items)