如何获取列表中特定元素的索引值?

时间:2019-08-09 12:18:03

标签: python python-2.7

我有一个嵌套列表,其中包含一些值和1个最小值列表,每个列表中都有一个。我想在列表列表中找到该最小值的索引值。

我有类似列表的列表-

distances=[[6.75, 0.75, 0.25, 2.25, 2.75, 1.75, 5.75, 2.75, 3.75, 7.75], [1.833333333333333, 4.166666666666667, 5.166666666666667, 7.166666666666667, 2.166666666666667, 3.166666666666667, 0.833333333333333, 2.166666666666667, 1.166666666666667, 2.833333333333333]]

以上列表中的最小值列表-

minimum_distance= [0.25, 0.833333333333333]

我尝试了以下代码-但

def find(c):
    for i, distance in enumerate(distances):
        try:
            j = distance .index(c)
        except ValueError:
            continue
        yield i, j

matches = [match for match in find(k for k in minimum_distance)] 
print(matches)

结果列表为空,我想要[[1,6)]

4 个答案:

答案 0 :(得分:1)

这是将list.indexmin结合使用的一种方法。

例如:

distances=[[6.75, 0.75, 0.25, 2.25, 2.75, 1.75, 5.75, 2.75, 3.75, 7.75], [1.833333333333333, 4.166666666666667, 5.166666666666667, 7.166666666666667, 2.166666666666667, 3.166666666666667, 0.833333333333333, 2.166666666666667, 1.166666666666667, 2.833333333333333]]
matches = [i.index(min(i)) for i in distances ]
print(matches)

输出:

[2, 6]

答案 1 :(得分:0)

如果已经计算出var datelist = []; var oModel = new sap.ui.model.json.JSONModel(); oModel.attachRequestCompleted(function() { var oFeiertageBerlin = oModel.getData().BE; for (var prop in oFeiertageBerlin) { datelist.push(oFeiertageBerlin[prop].datum); } }); console.log(datelist); var jDatum = new Date(); var jLink = "https://feiertage-api.de/api/?jahr=" + jDatum.getFullYear(); oModel.loadData(jLink); // Why is datelist.length == 0 here? console.log(datelist, datelist.length); ,则可以使用zip

minimum_distance

示例

[x.index(y) for x, y in zip(distances, minimum_distance)]

答案 2 :(得分:0)

我修改了您的代码:

def find1(c):
      j = c .index(min(c))
      return j
matches=[]    
for match in distances:
    matches.append(find1(match))
print(matches)

[2,6]

在您的情况下,您正在调用列表中的函数,该函数将转换为生成器

答案 3 :(得分:0)

我试图弄清楚为什么是元组?为什么2是1?您的意思是[(0,2),(1,6)],以便列表列表中的索引与每个子列表中最小值的索引配对吗?看您的查找功能,我有一个猜测。

如果您还希望按距离索引,那么我的第一个想法就是枚举zip,但是解压缩是有问题的。取而代之的是,我们使用itertools.count并将这三个压缩在一起。

请参阅Enumerate two python lists simultaneously?

ModuleNotFoundError: No module named 'pandas'
  

[(0,2),(1,6)]

这类似于您的find函数所执行的操作,但是通常您需要生成器或列表推导。