【发布时间】:2008-09-24 22:08:57
【问题描述】:
Python 列表推导式语法使过滤推导式中的值变得容易。例如:
result = [x**2 for x in mylist if type(x) is int]
将返回 mylist 中整数平方的列表。但是,如果测试涉及一些(昂贵的)计算并且您想过滤结果怎么办?一种选择是:
result = [expensive(x) for x in mylist if expensive(x)]
这将产生一个非“假”的值的列表,昂贵的(x)值,但是对于每个 x 调用两次昂贵的()。是否有一种理解语法允许您进行此测试,同时每个 x 只调用一次昂贵的?
【问题讨论】: