![](/img/trans.png)
[英]How to access elements from 3 lists with index set at minimum value from one list?
[英]How to find the index of only one minimum value in a list containing more than one minimum value
a = [2, 2, 4, 2, 5, 7]
如果要找到该列表中的最小值(即2
),则列表a
中的对应索引2
分别为0,1和3。
如何告诉python使用最高索引处的最小值(索引3处的数字2
)?
您可以使用a[::-1]
简单地反转列表,然后应用相同的技术来查找索引。 a[::-1].index(min(a))
将给出我们最终的最小值索引,为了将索引记录到第0位(列表的开头)我们可以减去a[::-1].index(min(a))
来自len(a) - 1
。
a = [2, 2, 4, 2, 5, 7]
print len(a) - a[::-1].index(min(a)) - 1
>>> 3
这可以写成函数indexes()
,然后获取生成的迭代器的max()
:
例:
def indexes(xs, value):
for i, x in enumerate(xs):
if x == value:
yield i
a = [2, 2, 4, 2, 5, 7]
print max(indexes(a, min(a))) # 3
更新; 就完整性而言; 如果您本身想要一组具有多个最小值的值的最小索引,则只需在表达式的前面换出max()
for min()
。 所以:
a = [2, 2, 1, 4, 2, 1, 5, 7]
print min(indexes(a, min(a))) # 2
同时:
print max(indexes(a, min(a))) # 5
一般来说这有点方便和灵活:)
>>> -min(zip(a, range(0, -len(a), -1)))[1]
3
使用枚举反转列表,其中起始索引为1
,在生成器中调用next以获取第一个值,从列表的长度中减去索引。
a = [2, 2, 3, 2, 5, 7]
mn = min(a)
print(len(a) - next(i for i, ele in enumerate(reversed(a),1) if ele == mn))
3
遍历枚举列表并使用最大索引:
In [109]: max([ind for ind, val in enumerate(a) if val==min(a)])
Out[109]: 3
找到最小的,然后遍历列表,收集匹配值的索引。
smallest = min(items)
indices = [index for index, value in enumerate(items) if value == smallest]
largest_index = max(indices) # or indices[-1]
如果您有一个很长的列表,那么您可能希望从后面开始并在到达第一个项目后停止。
largest_index = len(items) - next(index for index, value in \
enumerate(reversed(items), start=1) if value == smallest)
这可能会:
(len(a) -1 )- a[: : -1].index(min(a))
尝试这个:
a=[2,2,4,2,5,7]
minval=min(a) #min of a
for l in range(len(a)):
if a[l]==minval:
index=l
continue
print index
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.