正常的列表理解以这种方式出现:
new_list = [f(x) for x in l]
在Python中创建新列表的最简洁和可读方式是什么,类似于:
new_list = [f(x) while condition is True]
答案 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)