如果我有一个清单
[[209, 34], [50, 170], [197, 32], [75, 156], [176, 51], [54, 141], [205, 19], [35, 173]]
我如何找到具有最小最小元素的子列表?
即,在上面的情况下,它将是索引[3]
- [75,156]
,因为它的最小值大于所有其他元素的最小值。
答案 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