从嵌套列表中的最后一项获取最大值和最大值的索引
Get max value and index of max value from last item in nested lists
我有一个嵌套列表列表:
scoring_matrix = [[1, 2, 7], [3, 5, 2], [2, 2, 7]]
我正在尝试获取嵌套列表中所有最后一项的最大值,以及具有该最大值的嵌套列表的 index/indices。所有嵌套列表的长度都相等。
在这个例子中:
item output (value, index)
2 [7, [0, 2]]
我还需要为最后一个嵌套列表获取最高值和 index/indices,这是我计算出来的:
max_last_list = [index for index, item in enumerate(scoring_matrix[-1]) if item == max(scoring_matrix[-1])]
我正在尝试重写这一行以解决我的问题,但我不知道该怎么做。
解决方案无法使用非内置模块
尝试使用以下代码:
l = list(zip(*scoring_matrix))[2]
print([max(l), [i for i, v in enumerate(l) if v == max(l)]])
输出:
[7, [0, 2]]
基于我的第一个答案和下面的其他答案:
计算末端的最大值并在子列表中找到它
# Find the max of the ends value
max_end = max(map(lambda x: x[-1], scoring_matrix))
# Find the sublist whe the last if the overall max
indexes = [index for index, item in enumerate(scoring_matrix) if item[-1] == max_end]
# Group result
result = [max_end, indexes]
print(result)
把结局放在一起并努力
# Put all ends value in a list
ends = list(zip(*scoring_matrix))[2]
# Iterate over the ends to find the overall max
indexes = [i for i, v in enumerate(ends) if v == max(ends)]
# Group result
result = [max(ends), indexes]
print(result)
添加到@U10-Forward 的回答中,
l = list(zip(*scoring_matrix))[2]
print([max(l), [i for i, v in enumerate(l) if v == max(l)]])
你也可以试试这个:
maxi = max(sum(scoring_matrix,[]))
res = [maxi,[n for n,i in enumerate(scoring_matrix) if maxi in i]]
输出:
[7, [0, 2]]
保持简单,获取最大值,然后创建索引列表:
scoring_matrix = [[1, 2, 7], [3, 5, 2], [2, 2, 7]]
m = max(sublist[2] for sublist in scoring_matrix)
out = [m, [i for i, sub in enumerate(scoring_matrix) if sub[2] == m]]
print(out)
#[7, [0, 2]]
尝试使您的解决方案可读。与其使用巧妙的一行代码,更多具有清晰变量名称的代码通常更容易理解。
我会先计算最大值,然后在第二步中找到该最大值的索引。
scoring_max = max(l[-1] for l in scoring_matrix)
indices = [i for i, sublist in enumerate(scoring_matrix) if sublist[-1] == scoring_max]
return [scoring_max, indices]
第二个问题的解决方法非常相似。
last_sublist = scoring_matrix[-1]
list_max = max(last_sublist)
indices = [i for i, val in enumerate(last_sublist) if val == list_max]
我有一个嵌套列表列表:
scoring_matrix = [[1, 2, 7], [3, 5, 2], [2, 2, 7]]
我正在尝试获取嵌套列表中所有最后一项的最大值,以及具有该最大值的嵌套列表的 index/indices。所有嵌套列表的长度都相等。
在这个例子中:
item output (value, index)
2 [7, [0, 2]]
我还需要为最后一个嵌套列表获取最高值和 index/indices,这是我计算出来的:
max_last_list = [index for index, item in enumerate(scoring_matrix[-1]) if item == max(scoring_matrix[-1])]
我正在尝试重写这一行以解决我的问题,但我不知道该怎么做。
解决方案无法使用非内置模块
尝试使用以下代码:
l = list(zip(*scoring_matrix))[2]
print([max(l), [i for i, v in enumerate(l) if v == max(l)]])
输出:
[7, [0, 2]]
基于我的第一个答案和下面的其他答案:
计算末端的最大值并在子列表中找到它
# Find the max of the ends value max_end = max(map(lambda x: x[-1], scoring_matrix)) # Find the sublist whe the last if the overall max indexes = [index for index, item in enumerate(scoring_matrix) if item[-1] == max_end] # Group result result = [max_end, indexes] print(result)
把结局放在一起并努力
# Put all ends value in a list ends = list(zip(*scoring_matrix))[2] # Iterate over the ends to find the overall max indexes = [i for i, v in enumerate(ends) if v == max(ends)] # Group result result = [max(ends), indexes] print(result)
添加到@U10-Forward 的回答中,
l = list(zip(*scoring_matrix))[2]
print([max(l), [i for i, v in enumerate(l) if v == max(l)]])
你也可以试试这个:
maxi = max(sum(scoring_matrix,[]))
res = [maxi,[n for n,i in enumerate(scoring_matrix) if maxi in i]]
输出:
[7, [0, 2]]
保持简单,获取最大值,然后创建索引列表:
scoring_matrix = [[1, 2, 7], [3, 5, 2], [2, 2, 7]]
m = max(sublist[2] for sublist in scoring_matrix)
out = [m, [i for i, sub in enumerate(scoring_matrix) if sub[2] == m]]
print(out)
#[7, [0, 2]]
尝试使您的解决方案可读。与其使用巧妙的一行代码,更多具有清晰变量名称的代码通常更容易理解。
我会先计算最大值,然后在第二步中找到该最大值的索引。
scoring_max = max(l[-1] for l in scoring_matrix)
indices = [i for i, sublist in enumerate(scoring_matrix) if sublist[-1] == scoring_max]
return [scoring_max, indices]
第二个问题的解决方法非常相似。
last_sublist = scoring_matrix[-1]
list_max = max(last_sublist)
indices = [i for i, val in enumerate(last_sublist) if val == list_max]