从元组列表中获取元素之间差异最大的元组

时间:2019-07-17 13:03:01

标签: python python-3.x list tuples

假设我有一个元组列表,如:

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)

4 个答案:

答案 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的值。