如何在嵌套列表中找出最后元素最大的子列表?
获取嵌套列表中最后一个元素最大的子列表方法
方法一:用Python内置max()函数(最简洁)
直接利用max()函数的key参数指定比较规则,把每个子列表的最后一个元素作为排序依据,一行代码就能搞定:
data = [[2016, 'May', 16.9], [2016, 'April', 17.5], [2016, 'March', 17.8], [2016, 'February', 18.6], [2016, 'January', 18.8], [2015, 'December', 19.1], [2015, 'November', 19.2], [2015, 'October', 20.0], [2015, 'September', 20.6], [2015, 'August', 21.2], [2015, 'July', 21.6], [2015, 'June', 21.3], [2015, 'May', 21.5], [2015, 'April', 21.6], [2015, 'March', 22.1]] max_sublist = max(data, key=lambda x: x[-1]) print(max_sublist) # 输出: [2015, 'March', 22.1]
这里lambda x: x[-1]是匿名函数,作用是提取每个子列表的最后一个元素作为比较的“键”,max()会基于这个键找出对应的最大子列表。
方法二:手动遍历查找(适合理解底层逻辑)
如果想自己实现遍历比较的逻辑,可以这样写:
max_sublist = data[0] for sublist in data[1:]: if sublist[-1] > max_sublist[-1]: max_sublist = sublist print(max_sublist) # 输出: [2015, 'March', 22.1]
思路是先把第一个子列表当作初始最大值,然后逐个遍历后续子列表,只要当前子列表的最后一个元素比记录的最大值大,就更新最大值,直到遍历完所有元素。
内容的提问来源于stack exchange,提问作者Ljupcho Naumov
相关产品推荐
相关产品推荐

