我有一个显示和库存报告的程序,我只是想知道如何将以下内容放入列表理解而不是for-loop ...我对所有这些python术语都是一个菜鸟但是来自我所知道的是,任何以for-loop形式出现的东西也可以表达为列表理解......任何帮助都将受到赞赏
def rowSum(TotSize,data,row,col):
"""Calculates the sum of each row in a given 2 dimensional list and stores
it into a given one dimensional list"""
for i in range(row):
sum = 0
for j in range(col):
sum += data[i][j]
TotSize[i] = sum
答案 0 :(得分:7)
您的代码基本上等同于
TotSize[:] = map(sum, data)
这将汇总所有data
,而不仅仅是第一个row
行和第一个col
列。它还会调整TotSize
的大小以匹配data
所拥有的行数(假设TotSize
是列表)。
我想知道你为什么要传递应该存储结果的列表。在Python中,您通常只返回该列表:
def row_sums(data):
return map(sum, data)
现在有必要为此定义一个函数是值得的......
答案 1 :(得分:6)
我可能误解了你的问题,但是你要求这样的事情吗?
>>> testdata = [[5, 6, 8], [], range(8), [42]]
>>> ToTSize = [sum(row) for row in testdata]
>>> ToTSize
[19, 0, 28, 42]