我在python中使用二维列表,我需要找到列表中每个项目的总和,然后返回具有最低值的索引。
它应该像这样返回:
Row([[1000, 30], [12, 23], [560, 30, 1]])
1
Row([[10, 9], [20, 1, 2], [1, 3]])
2
这就是我目前在shell中所拥有的:
def Row(S):
count=0
for r in range(len(S[0])):
for c in range(len(S)):
count += sum([r])
return r
我无法获取shell中的代码以返回具有最低总和的二维列表中的indice。有什么想法吗?
答案 0 :(得分:1)
你可以在一行中完成:
minidx = min(enumerate(data), key=lambda x:sum(x[1]))[0]
虽然我更愿意进行解包(而不是索引结果):
minidx, minlist = min(enumerate(data), key=lambda x:sum(x[1]))
这有另一个好处,你可以快速处理具有最小总和的列表...虽然这很容易获得一旦你有索引......
答案 1 :(得分:1)
您可以指定"键"到min
根据某些任意标准获得最小列表。使用此功能,我们只需一行即可完成:
def min_sum(data):
return min(xrange(len(data)), key=lambda i: sum(data[i]))
答案 2 :(得分:0)
def row(data):
sums = [sum(x) for x in data]
return sums.index(min(sums))
print row([[1000, 30], [12, 23], [560, 30, 1]])