我有类似列表的列表-
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)]
答案 0 :(得分:1)
这是将list.index
与min
结合使用的一种方法。
例如:
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函数所执行的操作,但是通常您需要生成器或列表推导。