📅  最后修改于: 2023-12-03 15:19:06.035000             🧑  作者: Mango
在程序开发过程中,有时候需要查找列表中最小的 k 个数字,并返回它们的索引。本文将介绍如何使用 Python 查找 k 最小元素的索引。
找到 k 个最小的元素可以通过不同的方法完成,但是我们将使用以下方法:
这种方法有一个时间复杂度为 O(nlogn),因为排序通常需要 O(nlogn) 的时间复杂度。
以下是代码片段:
def k_smallest_indexes(lst, k):
"""
返回列表中 k 个最小元素的索引
"""
sorted_lst = sorted(range(len(lst)), key=lambda i: lst[i])
return sorted_lst[:k]
# 示例
lst = [4, 5, 2, 7, 1, 9, 3]
k = 3
print(k_smallest_indexes(lst, k)) # [4, 2, 6]
在以上代码中,我们使用了 Python 的 sorted()
函数来对列表进行排序,同时使用 range()
和 lambda
函数来返回索引并根据其值进行排序。之后,我们只需要返回前 k 个元素的索引即可。
在示例中,我们使用列表 [4, 5, 2, 7, 1, 9, 3]
和 k = 3
来查找前 3 个最小元素的索引。结果为 [4, 2, 6]
,对应的元素为 [1, 2, 3]
。
在本文中,我们介绍了如何使用 Python 查找 k 个最小元素的索引。虽然我们使用的是排序算法,但是使用其他算法可能需要更少的时间复杂度,但是也需要更多代码实现。无论如何,选择哪种方法取决于您的实际需求。