Skip to main content
 首页 » 编程设计

python之Python 在列表推导过程中如何执行

2025年05月04日18soundcode

def thing(mode, data): 
    return [ 
        item for item in data 
        if { 
            'large': lambda item: item > 100, 
            'small': lambda item: item < 100, 
        }[mode](item) 
    ] 

此列表推导式生成一个 lambda 字典,通过 mode 参数检索一个 lambda,并将其应用于当前正在处理的列表项。我的问题是:这有什么性能特点?

整个字典是在列表组合的每次迭代中从头开始创建的吗?还是创建一次并在每个项目上使用?

请您参考如下方法:

Is the entire dictionary created from scratch during each iteration of the listcomp

是的。

Or is it created once and used on each item?

没有。


幸运的是,在这种情况下(以及我能想到的所有其他类似情况),提前构建字典很容易:

 d = { 
        'large': lambda item: item > 100, 
        'small': lambda item: item < 100, 
      } 
 return [item for item in data if d[mode](item)] 

甚至,

func = { 
        'large': lambda item: item > 100, 
        'small': lambda item: item < 100, 
        }[mode] 
return [item for item in data if func(item)]