怎么发现的
读别人代码的时候,看到
paths = set([Path(x).resolve() for x in paths])
于是我思考, set
类定义长这样
class set([iterable])
既然是接受一个 iterable
对象,为什么不直接传入生成器而是一个列表推导式呢
paths = set(Path(x).resolve() for x in paths)
于是,我进行了以下简单的测试。
测试
首先,上面两种写法的结果肯定是一致的,那么可能的差异就在于性能上了。
ipython
启动 ,
测试一
测试二
可以看到,传入一个 列表推导式
确实比 生成器
的速度要快一些,其中的原有也就不研究了。于是列表推导式在这道选择题里胜出了,又好看又快,学!