从for循环到列表理解

时间:2012-03-28 00:00:39

标签: python nested-lists

我有一个显示和库存报告的程序,我只是想知道如何将以下内容放入列表理解而不是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

2 个答案:

答案 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]