Python 使用for循环查找列表中出现的所有最小值

Python 使用for循环查找列表中出现的所有最小值,python,list,for-loop,min,Python,List,For Loop,Min,抱歉,如果已经有人问过这个问题,但我似乎找不到我想要的答案,他们都使用了我们还不允许使用的工具。 问题是我必须使用for循环遍历列表,找到最小值,然后返回该值的索引。我同意的那一部分,我的问题是如何让程序返回所有出现的最小值 限制 我不能使用枚举或其他类似的函数,我可以使用min函数,但就是这样,它必须在for循环中完成 任何帮助都将不胜感激,谢谢 n = [1, 2, 3, -50, -60, 0, 6, 9, -60, -60] for i in n: min_val = []

抱歉,如果已经有人问过这个问题,但我似乎找不到我想要的答案,他们都使用了我们还不允许使用的工具。 问题是我必须使用for循环遍历列表,找到最小值,然后返回该值的索引。我同意的那一部分,我的问题是如何让程序返回所有出现的最小值

限制 我不能使用枚举或其他类似的函数,我可以使用min函数,但就是这样,它必须在for循环中完成

任何帮助都将不胜感激,谢谢

n = [1, 2, 3, -50, -60, 0, 6, 9, -60, -60]
for i in n:
    min_val = []
    item = min(n)
    item_index = n.index(item)
    min_val.append(item_index)

print(min_val)


我假设这是python,所以可以使用numpy

将numpy导入为np
n=np.数组([1,2,3,-50,-60,0,6,9,-60,-60])
searchKey=-60
item_index=np.其中(n==searchKey)[0]
item_index=>array([4,8,9])
如果您事先不知道最小值,可以使用如下for循环:

minval=n[0]
对于n中的i:
如果i
然后用上面的
minval
替换
searchKey

免责声明:n属于np.array not list类型,不确定这对您是否重要,但如果是这样,我可以发布一个不使用enumerate的不那么雄辩的列表解决方案。

以下内容将在一行中完成工作

min_val_idxs = [ x for x in range(len(n)) if n[x] == min(n)]
对循环使用
  • 创建一个空列表,
    索引
    • 这是在循环之前/之外完成的,否则每次迭代都会重置列表
  • 使用
    为范围内的i(len(x)):
    创建循环,该循环基本上遍历索引位置列表
    [0,1,2,3,…,len(x)-1]
    • 对于in n中的i:
      只需迭代列表中的每个值
  • 在循环中,将任何
    i
    添加到列表中,其中
    x[i]
    min(x)
    匹配
def get_索引(x:list)->列表:
索引=列表()
最小值=最小值(x)
对于范围内的i(len(x)):
如果x[i]==最小值:
索引.附加(i)
回报指数
打印(获取索引(n))
>>> [4, 8, 9]

以下是解决此问题的方法:

n = [1, 2, 3, -50, -60, 0, 6, 9, -60, -60]
for i in n:
    min_count = n.count(min(n)) # getting a count of the number of minimum values
    min_value = min(n)
    min_index_list = []
    for j in range(min_count):
        min_index = n.index(min_value)
        min_index_list.append(min_index)
        n[min_index] += 1
    break

print(min(n) - 1, min_index_list)

这回答了你的问题吗?