python - 列表的 N 个最小元素的索引
问题描述
我试图从一个列表中找到 3 个最低的数字,并使用这些索引从另一个列表中找到相应的值。这是我尝试过的一个例子
a = [12, 83, 22, 30, 57, 32, 88, 46, 20, 26, 78, 65, 45, 56, 74]
b = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o']
lowest = lowest2 = lowest3 = max(a)
indexes = []
for i in range(0,len(a)):
if a[i] < lowest :
lowest = a[i]
print(b[i])
elif a[i] < lowest2 and a[i] > lowest:
lowest2 = a[i]
print(b[i])
elif a[i] < lowest3 and a[i] > lowest2:
lowest3 = a[i]
print(b[i])
print(lowest,lowest2,lowest3)
我只能使用 anaconda 库,不,这不是分配,这是我一直在尝试做的程序的一小部分。
输出: a b c d i j 12 20 26
解决方案
您可以做的是对列表进行排序a
并返回它的索引值,
>>> a = [12, 83, 22, 30, 57, 32, 88, 46, 20, 26, 78, 65, 45, 56, 74]
>>> n_min_values = 3
>>> sorted(range(len(a)), key=lambda k: a[k])[:n_min_values]
[0, 8, 2] # index values
并遍历此索引值列表以从列表中获取相应的值b
,
>>> b = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o']
>>> for i in sorted(range(len(a)), key=lambda k: a[k])[:n_min_values ]:
print(b[i])
a
i
c
或者
使用列表理解,
>>> [b[i] for i in sorted(range(len(a)), key=lambda k: a[k])[:n_min_values ]]
['a', 'i', 'c'] # your output
推荐阅读
- django - 登录 Django-allauth 社交 Facebook 登录后将用户重定向到上一页
- go - 从舵图中的值文件中读取值时的默认键值
- python - 如何使用 Django 模型中的函数遍历 SQL 数据库?
- python - 在回归中,我的 DV 和 IV 中的百分比特征使用哪种算法?
- python - 过滤我的字典,其中键 = 某个值
- python - tf.strings.format 自动将标量张量包装为列表
- git - 没有代码的 docker 镜像的 openshift 的可行性。并处理这些案件
- html - 我不希望在不使用 font-size 属性的情况下在框之间有任何空格
- android - 如何在 recyclerview 中固定一个 itemview。始终在 recyclerview 顶部显示该视图
- c# - 在 golang 中计算 GeoId 波动