我正在使用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]])