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