什么更快?列表的最小值,然后是最小值的索引,vs迭代lis

2024-10-03 17:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python,我有一个列表列表,比如list1,其中每个内部列表有2个元素。 我有第二个列表,比如列表2。list1的第i个元素对应于list2的第i个元素。在

是否更快地找到:

lowest = min(list1, key=lambda x: x[1])
index = list1.index(lowest)
correspondingLowest = list2[index]

还是更快:

^{pr2}$

我不知道它的内置功能是如何的min(list)和列表.索引但我假设它们都涉及到遍历整个列表,在min的情况下,迭代到.index的第个元素。而在第二个选项中,它只遍历列表一次。在

我的list1和list2中至少有100000个元素,所以任何差异都会很明显。我想还有其他更快的选择吗?在

注意,我需要找到最低值和相应的最低值,我不只是寻找最低值,以便我可以找到相应的最低值。在


Tags: lambdakey功能元素列表indexmin内置
1条回答
网友
1楼 · 发布于 2024-10-03 17:24:30

使用^{} function生成索引,并对min()使用key参数函数,以确保它从生成的(index,element)元组中找到最小的列表值:

min_index, min_value = min(enumerate(list1), key=lambda ie: ie[1][1])

找到最小值然后查找索引必须扫描列表两次,而用C实现的min()循环将轻而易举地击败Python循环。在

如果您所做的只是将索引从一个列表映射到另一个列表,您也可以将这两个列表压缩为zip

^{pr2}$

这将选择list1中的最小值,并将该值连同list2中的相应值一起返回。如果这是Python 2,请使用^{} function以获得将来的兼容性并避免在内存中构建整个成对列表:

try:
    # Python 2
    from future_builtins import zip
except ImportError:
    # Python 3, it is built-in
    pass

相关问题 更多 >