如何在不使用任何导入或 sum 函数的情况下对嵌套列表中的列值求和?

我被要求在嵌套列表的每一列中找到第一个值的总和。如何在不使用导入或 sum 函数的情况下执行此操作?


 def column_sums(square):

    """Returns the sum of the columns"""


    result = []

    i = 0

    for element in square:

        n = 0

        for item in element:

            if item == element[n]:

                i = i + item

        n = n + 1

    result.append(i)

    i = 0

    return result


square = [

    [1, 2, 3, 4],

    [5, 6, 7, 8],

    [9, 10, 11, 12],

    [13, 14, 15, 16]

]

print(column_sums(square))

这是我想出的,但它只返回第一列的值。我怎样才能得到这样列出的所有列的总和?:


[28, 32, 36, 40]


倚天杖
浏览 91回答 3
3回答

噜噜哒

对于没有任何内置函数的纯循环方法:def column_sums(square):    result = [0] * len(square[0])    for row in square:        for i in range(len(result)):            result[i] += row[i]    return result以下使用zip(*...)换位模式:def column_sums(square):    result = []    for col in zip(*square):        total = 0        for num in col:            total += num        result.append(total)    return resultsquare = [    [1, 2, 3, 4],    [5, 6, 7, 8],    [9, 10, 11, 12],    [13, 14, 15, 16]]print(column_sums(square))# [28, 32, 36, 40]请注意,您通过压缩行来获取列。如果您可以使用sum和所有其他内置插件,以下将是最短的:print(list(map(sum, zip(*square))))

人到中年有点甜

在这里,您可以使用我想到的最简单的溶胶,而无需使用任何花哨的东西。def column_sums(square):    """Returns the sum of the columns"""    result = [0,0,0,0]    for element in square:        for i,item in enumerate(element):                result[i] = result[i] + item       return result

繁星淼淼

用这个:def column_sums(square):    result = dict.fromkeys(len(square), 0)    for i, v in enumerate(zip(*square)):        for x in v:            result[i] += x    return resultsquare = [    [1, 2, 3, 4],    [5, 6, 7, 8],    [9, 10, 11, 12],    [13, 14, 15, 16]]print()或者sum你实际上可以使用:square = [    [1, 2, 3, 4],    [5, 6, 7, 8],    [9, 10, 11, 12],    [13, 14, 15, 16]]print(column_sums(square))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python