繁体   English   中英

比较嵌套列表中的索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM