V = [[10,20,30,40],[30,40,50,-50,-70]]
V_max_result = max(V)
V_max_result_index = V.index(max(V))
print(V_max_result,V_max_result_index)
目前,它的输出类似于[30, 40, 50, -50, -70] 1
我希望它显示类似[[40,3],[50,2]]
的内容,其中第一个列表中的最大值为40,并且位于3。
答案 0 :(得分:1)
V = [[10,20,30,40], [30,40,50,-50,-70]]
print([[max(per_v), per_v.index(max(per_v))] for per_v in V])
输出:
[[40,3],[50,2]]
答案 1 :(得分:1)
answer的@atline工作时,它必须在每个子列表上迭代三遍,一次获取最大值,第二遍再次获取最大值,然后第三遍查找其值列表中的位置。
相反,找到每个元组都像(value, index)
的元组的最大值比较容易。这几乎是enumerate
返回(index, value
)的结果,只是相反。我们可以使用zip(values, itertools.count())
。之所以有效,是因为元组首先根据第一个条目进行排序,然后再根据第二个条目进行排序。
from itertools import count
V = [[10,20,30,40], [30,40,50,-50,-70]]
print([max(zip(per_v, count())) for per_v in V])
# [(40, 3), (50, 2)]
如果您坚持将内部元组也列出来:
print([list(max(zip(per_v, count()))) for per_v in V])
# [[40, 3], [50, 2]]