相关疑难解决方法(0)

Python:使用 dis 分析列表理解

最近,我对 SO 进行了讨论(请参阅上下文),内容涉及以下两段代码:

res = [d.get(next((k for k in d if k in s), None), s) for s in lst]
Run Code Online (Sandbox Code Playgroud)

和:

res = [next((v for k,v in d.items() if k in s), s) for s in lst]
Run Code Online (Sandbox Code Playgroud)

两者都迭代s列表中的字符串并在 dict 中lst查找。如果找到,则返回关联值,否则返回。我很确定第二段代码比第一段更快,因为(对于每个)字典中没有查找,只是对(键,值)对进行迭代。sdsss

问题是: 如何检查这是否真的发生在幕后?

我第一次尝试该dis模块,但结果令人失望(python 3.6.3):

>>> dis.dis("[d.get(next((k for k in d if k in s), None), s) for s in lst]")
  1           0 LOAD_CONST               0 (<code object <listcomp> …
Run Code Online (Sandbox Code Playgroud)

python performance list-comprehension disassembly

4
推荐指数
1
解决办法
1097
查看次数