关于Python内建类set的参数选择

怎么发现的

读别人代码的时候,看到

paths = set([Path(x).resolve() for x in paths])

于是我思考, set 类定义长这样

class set([iterable])

既然是接受一个 iterable 对象,为什么不直接传入生成器而是一个列表推导式呢

paths = set(Path(x).resolve() for x in paths)

于是,我进行了以下简单的测试。

测试

首先,上面两种写法的结果肯定是一致的,那么可能的差异就在于性能上了。

ipython 启动 ,

测试一
测试一
测试二

测试二

可以看到,传入一个 列表推导式 确实比 生成器 的速度要快一些,其中的原有也就不研究了。于是列表推导式在这道选择题里胜出了,又好看又快,学!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值