假设我有一个元组列表,如:
listTuples = [(0, 3), (5, 10), (2, 4)]
我想获取元组元素之间差异最大的元组索引
3 - 0 = 3
10 - 5 = 5
4 - 2 = 2
所以我想要1作为回报。
目前,我正在执行以下操作,但是也许有更好的方法(更快,更少的代码行)来完成此操作。
listTuples = [(0, 3), (5, 10), (2, 4)]
k = 0
e = 0
for j, i in enumerate(listTuples):
diff = i[1] - i[0]
if k < diff:
k = diff
e = j
else:
pass
print(e)
答案 0 :(得分:6)
您可以使用具有index
功能的列表对象的max
方法。即
>>> listTuples = [(0, 3), (5, 10), (2, 4)]
>>> listTuples.index(max(listTuples, key=lambda x: x[1] - x[0]))
1
这里max(listTuples, key=lambda x: x[1] - x[0])
将返回一个具有最大差异的元组,而index
方法将从原始列表中找到该元组的索引。
即listTuples.index((5, 10))
答案 1 :(得分:3)
使用max()
和自定义键:
max(enumerate(listTuples), key = lambda x: x[1][1]-x[1][0])[0]
答案 2 :(得分:2)
我建议使用max()
函数:
x = [abs(j - i) for i, j in listTuples]
print(x.index(max(x)))
答案 3 :(得分:1)
您可以将内置max
与自定义键功能一起使用,如下所示:
max(range(len(listTuples)), key=lambda i: listTuples[i][1] - listTuples[i][0])
根据range(len(listTuples))
函数为每个元素返回的最大值,它给出key
的值。