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 只调用一次昂贵的?