查找元组中最小元素的最大值

时间:2014-06-01 02:12:52

标签: python list max minimum

如果我有一个清单

[[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]

我如何找到具有最小最小元素的子列表?

即,在上面的情况下,它将是索引[3] - [75,156],因为它的最小值大于所有其他元素的最小值。

2 个答案:

答案 0 :(得分:6)

应该如此简单:

max(list_of_iterables, key=min)

即:

>>> lst = [[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]
[[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]
>>> max(lst, key=min)
[75, 156]

max(和min)函数通过遍历iterable并比较iterable中的每个元素来挑选最大(或min}元素。问题是比较的东西是应用于单个元素的key函数的结果。默认情况下,key函数只是标识函数 - 但它可以是您想要的任何内容。在这种情况下,我的键功能是min,它选择子列表的最小值。然后,我们会根据最低价格对这些子列表进行比较,并选出max,这正是您的问题所要求的。

答案 1 :(得分:0)

您可以使用sorted功能。

>>> lst = [[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]
[[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]
>>> sorted(lst, key=min, reverse=True)
[[75, 156],
 [54, 141],
 [176, 51],
 [50, 170],
 [35, 173],
 [209, 34],
 [197, 32],
 [205, 19]]

key=min表示在对列表进行排序时会使用min函数。

然后,您可以使用index方法找到值的索引。像:

>>> lst.index([75, 156])
3