Ben*_*ngo 1 python performance list
给出一个数据列表:
[[0, 0], [1, 0], [0, 1], [-1, 0], [0, -1], [1, -1], [2, 0], [1, 1], [0, 2]]
Run Code Online (Sandbox Code Playgroud)
在python中获得最低X和Y的最快方法是什么.在这种情况下[-1,-1].
不确定它是最快的,但它可能是最短和最"pythonic":
>>> map(min, zip(*data))
[-1, -1]
Run Code Online (Sandbox Code Playgroud)
更新:我也使用10000个随机子列表和100次迭代的列表对此进行了一些时序分析.事实证明它比Aशwini的itemgetter解决方案快一点,但普通的for循环仍然是最快的:
0.400840 min_mapminzip
0.579334 min_itemgetter
0.292459 min_loop
Run Code Online (Sandbox Code Playgroud)
这是为Python 2.x的...与Python 3,在那里zip,map等都是迭代器,又是另一回事:
0.186229 min_mapminzip # wrong result, see below
0.686008 min_itemgetter
0.336031 min_loop
Run Code Online (Sandbox Code Playgroud)
更正:我忘了list在map迭代器的情况下应用,从而创建迭代器但没有做任何实际的工作......感谢gnibbler和Aशwini指出这个!有了list(map(...)),执行时间与Python 2.x几乎相同,即普通旧循环仍然是最快的.
更新2:有趣的是,"map-min-zip"解决方案仅对相对较短的列表更快 - "短",大约10,000个项目.对于更长的列表,大约100,000或更多,"itemgetter"解决方案变得更快.平原for循环总是最快的...
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |