以二维列表python中的最小总和返回行索引



我正在使用Python中的二维列表,我需要找到列表中每个项目的总和,然后返回具有最低值的索引。

它应该像这样返回:

Row([[1000, 30], [12, 23], [560, 30, 1]])
1
Row([[10, 9], [20, 1, 2], [1, 3]])
2

这就是我到目前为止所拥有的:

def Row(S):
count=0
for r in range(len(S[0])):
    for c in range(len(S)):
        count += sum([r])
        return r

我无法将代码在外壳中返回以最低和最低的二维列表中返回Indice。有什么想法吗?

您可以根据某些任意条件为min指定一个"键"以获取列表的最小值。使用此功能,我们只能以一行进行操作:

def min_sum(data):
    return min(xrange(len(data)), key=lambda i: sum(data[i]))

您可以在1行中进行:

minidx = min(enumerate(data), key=lambda x:sum(x[1]))[0]

尽管我宁愿进行解开包装(而不是索引结果):

minidx, minlist = min(enumerate(data), key=lambda x:sum(x[1]))

这具有侧面好处,您可以在列表中快速处理最低总和……尽管一旦您拥有索引,这很容易获得...

def row(data):
    sums = [sum(x) for x in data]
    return sums.index(min(sums))
print row([[1000, 30], [12, 23], [560, 30, 1]])

最新更新