假设我有一个列表[['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
。永远不会有2个嵌套列表,可能更多。我知道如何比较这个特定列表中的索引2,但是我们可以说有6个嵌套列表。
如何比较所有索引2中的索引2,然后在第二个索引中存储具有最大值的列表。关键是我不知道有多少列表,需要让它适用于任何数量。有一个先决条件,它的子列表长度相同,第二个索引将包含一个整数。
对于学校来说,这是一个问题所以我只需要帮助我的基本想法而不是整个代码,因为我不想剽窃。我已经尝试过,但是我的索引超出了范围错误。任何帮助将不胜感激
temp = []
for i in range(len(lst)):
if lst[i][2] > lst[i+1][2]:
temp = lst[i]
return temp `
答案 0 :(得分:0)
您可以使用key
中的max
参数:
s = [['apple', 'tree', 4, 5], ['orange', 'bush', 6, 3]]
new_s = max(s, key=lambda x:x[2])
输出:
['orange', 'bush', 6, 3]
现在关于您的代码,您需要将lst[0]
分配给temp
,以便为您的算法提供基准:
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
答案 1 :(得分:0)
通过指定max函数的键,我们可以实现这一点
这里的键是列表中的第二个元素。因此,将key=lambda l:l[2]
添加到正常的最大函数是此
>>> max( lst ,key=lambda l :l[2])
['orange', 'bush', 6, 3]
>>>
阅读这篇文章,了解如何使用密钥的更多细节:lambda What is key=lambda
答案 2 :(得分:0)
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]