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

2024-04-19 13:35:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

Tags: 方法代码in元素列表forifdiff
3条回答

我建议使用max()函数:

x = [abs(j - i) for i, j in listTuples]
print(x.index(max(x)))

可以将list对象的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))

对自定义键使用max()

max(enumerate(listTuples), key = lambda x: x[1][1]-x[1][0])[0]

相关问题 更多 >