簡體   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