Python如何获取索引二维列表中第二个元素为最小值的子列表
实现方法
要获取二维列表中第二个位置值为最小值的元素对,直接使用Python内置min()函数,通过key参数指定比较维度即可,无需手动编写遍历比对逻辑。
针对你给出的示例,代码如下:
# 原始列表 L = [[0, 4],[10, 2],[20, 1],[30, 2]] # 按每个子列表索引为1的位置(即第二个元素)做比较,取最小值对应的原元素 min_pair = min(L, key=lambda sub_list: sub_list[1]) print(min_pair)
运行后输出结果为[20, 1],和你预期的结果一致。
参数说明
min()函数默认直接比较传入序列的元素本身,传入key参数后,会先对序列中每个元素执行key指定的取值逻辑,用取到的值做大小比较,最终返回序列里对应的原始元素,不是比较用的中间值。- 示例里的
lambda sub_list: sub_list[1]是匿名函数,作用是对每个子列表,取它索引为1的位置的值(也就是你说的y值)作为比较依据。 - 如果列表里存在多个y值同为最小值的元素对,这个写法会返回第一个出现的符合条件的元素,和
min()函数默认取首个最小值的逻辑一致。
如果你不想写匿名函数,也可以导入标准库operator模块的itemgetter实现相同效果,写法更简洁:
from operator import itemgetter L = [[0, 4],[10, 2],[20, 1],[30, 2]] min_pair = min(L, key=itemgetter(1)) print(min_pair) # 输出同样为 [20, 1]
内容的提问来源于stack exchange,提问作者Marion
相关产品推荐
相关产品推荐

