Skip to main content
 首页 » 编程设计

python之在 python 中的对列表中找到最小 x 和 y 值的最佳方法

2025年05月04日10zhwl

给定一个数据列表:

[[0, 0], [1, 0], [0, 1], [-1, 0], [0, -1], [1, -1], [2, 0], [1, 1], [0, 2]] 

在 python 中获得最低 X 和 Y 的最快方法是什么? 在这种情况下 [-1,-1]。

请您参考如下方法:

不确定它是不是最快的,但它可能是最短且最“pythonic”的:

>>> map(min, zip(*data)) 
[-1, -1] 

更新:我也对此做了一些时序分析,使用了 10000 个随机子列表和 100 次迭代的列表。事实证明它比 Aशwini 的 itemgetter 解决方案快一点,但普通的 for 循环仍然是最快的:

0.400840   min_mapminzip 
0.579334   min_itemgetter 
0.292459   min_loop 

那是针对 Python 2.x 的……对于 Python 3,其中 zip、map 等是迭代器,这是另一回事了:

0.186229   min_mapminzip   # wrong result, see below 
0.686008   min_itemgetter 
0.336031   min_loop 

更正:我忘记在 map 是迭代器的情况下应用 list,因此创建了迭代器但没有做任何实际工作... 感谢 gnibbler 和 Aशwini 指出这一点!使用 list(map(...)),执行时间与 Python 2.x 几乎相同,即普通的旧循环仍然是最快的。


更新 2: 有趣的是,“map-min-zip”解决方案仅对相对较短的列表更快——“短”的列表大约有 10,000 个。对于更长的列表,大约 100,000 或更多,“itemgetter”解决方案变得更快。普通的 for 循环总是最快的...