繁体   English   中英

Python 2D列表添加列的值

[英]Python 2D list to add the values of a column

因此,我必须使用函数def sumColumn(matrix,columnIndex)来添加由用户输入的行创建的列的值,而我还不太清楚从这一点开始要做什么。

def sumColumn(matrix, columnIndex):
    return

def getMatrix():
    matrix = []
    for row in range(3):
        print("Enter a 3-by-4 matrix row for row:%d" %row)
        row = input().split(' ')
        row = [float(i) for i in row]
        matrix.append(row)
    return matrix

def display(m):
    for row in m:
        print(row)

def main():
    m = getMatrix()
    print("\nThe matrix is")
    display(m)
    print()
    for col in range(len(m[0])):
        print("Sum of elements for column %d is %.2f" % (col, sumColumn(m,col)))

main()

如果可以使用numpy ,则可以在列上使用.sum()

import numpy as np
def sumColumn(matrix, columnIndex):
    matrix = np.array(matrix)
    return matrix[:,columnIndex].sum()

给出以下输出:

Enter a 3-by-4 matrix row for row:0
'1 2 3 4'
Enter a 3-by-4 matrix row for row:1
'1 2 3 4'
Enter a 3-by-4 matrix row for row:2
'1 2 3 4'

The matrix is
[1.0, 2.0, 3.0, 4.0]
[1.0, 2.0, 3.0, 4.0]
[1.0, 2.0, 3.0, 4.0]

Sum of elements for column 0 is 3.00
Sum of elements for column 1 is 6.00
Sum of elements for column 2 is 9.00
Sum of elements for column 3 is 12.00
def sumColumn(matrix, columnIndex):
    sum = 0                     # running sum
    for row in matrix:
        sum += row[columnIndex] # add value from specified column of row to sum
    return sum

您可以使用sum函数和生成器表达式从矩阵中的每一行获取该索引处的元素:

def sumColumn(matrix, columnIndex):
    return sum(row[columnIndex] for row in matrix)

您从未控制过每行具有相同的列数,这可能导致以后的错误。

假设输入正确,则可以执行以下操作:

def sumColumn(matrix, columnIndex):
    sum = 0
    for i in range(len(matrix)):
        sum += matrix[i][columnIndex]
    return sum

但是,请始终双重控制输入!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM