[英]comparing indexes in a nested list
假设我有一个列表[['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
。 并非总是有2个嵌套列表,可能会更多。 我知道如何比较该特定列表中的索引2,但是可以说有6个嵌套列表。
我将如何比较所有索引2,然后将具有最大值的列表存储在第二个索引中。 关键是我不知道有多少个列表,需要使其工作多少。 有一个前提条件,即子列表的长度都相同,并且第二个索引将包含一个整数。
这是学校的问题,因此我只需要基本概念方面的帮助,而不是我不想chunk窃的全部代码 。 我已经尝试过,但是索引超出范围错误。 任何帮助,将不胜感激
temp = []
for i in range(len(lst)):
if lst[i][2] > lst[i+1][2]:
temp = lst[i]
return temp `
您可以只在max
使用key
参数:
s = [['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
new_s = max(s, key=lambda x:x[2])
输出:
['orange', 'bush', 6, 3]
现在就您的代码而言,您将需要为temp
分配lst[0]
,以为您的算法提供一个基准来开始:
def the_max(lst):
temp = lst[0] #use lst[0] as the first benchmark.
for i in range(len(lst)):
if lst[i][2] > temp[2]:
temp = lst[i]
return temp
通过指定max函数的键,我们可以实现此功能。这里的键是列表中的第二个元素。 因此,将key=lambda l:l[2]
到正常的max函数是解决此问题的方法
>>> max( lst ,key=lambda l :l[2])
['orange', 'bush', 6, 3]
>>>
阅读此文章,了解有关如何使用键以及使用key的优势的更多详细信息:lambda 什么是key = lambda
lst = [['apple','tree',4,5],['orange','bush',6,3],['aa','bb',2,3]]
print max(lst, key=lambda x:x[2])
要么
temp = lst[0]
for i in range(len(lst)):
temp = temp if temp[2] > lst[i][2] else lst[i]
print temp
输出:['orange','bush',6,3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.