首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建3×4矩阵并添加列

创建3×4矩阵并添加列
EN

Stack Overflow用户
提问于 2013-01-18 04:29:13
回答 2查看 1.9K关注 0票数 3

对于这个实验室,您将使用Python中的二维列表。执行以下操作:编写一个函数,该函数使用以下标题返回矩阵中指定列中所有元素的总和: def sumColumn(矩阵,columnIndex) 编写一个函数,该函数逐行显示矩阵中的元素,其中每一行中的值都显示在单独的行上(请参见下面的输出)。编写一个测试程序(即主函数),读取3X4矩阵并显示每列的和。下面是一个示例运行: 输入第0: 2.5 3 4 1.5行的矩阵行3乘4矩阵行1: 1.5 4 2 7.5输入第2行3乘4矩阵行: 3.5 1 1 2.5矩阵行 矩阵为2.5 3.0 4.0 1.5 1.5 4.0 2.0 7.5 3.5 1.0 1.0 2.5 第0栏的元素之和为7.5,第1栏的元素和为8.0,第2栏的元素和为7.0,第3栏的元素和为11.5

到目前为止,我的代码如下:

代码语言:javascript
复制
def main():
    matrix = [[],[],[]]
    matrix[0].append(raw_input('Enter a 3-by-4 matrix row for row 0:'))
    matrix[1].append(raw_input('Enter a 3-by-4 matrix row for row 1:'))
    matrix[2].append(raw_input('Enter a 3-by-4 matrix row for row 2:'))
    print 'The matrix is:', '\n', matrix[0], '\n', matrix[1], '\n', matrix[2], '\n',   

main()    

我需要帮助将列添加到一起,我可能不正确地创建了矩阵--我一直使用sum = matrix[0][0][0] + matrix[0][0][2],但它确实添加了它们--它只是将两个数字放在一起。

例句:我想要1+2

预期答案3

出来12

是否可以将列表中的两个元素相加在一起?

EN

回答 2

Stack Overflow用户

发布于 2013-01-18 04:45:13

raw_input返回一个字符串,因此需要处理成某种形式的数字。

一个要求输入的简短示例,它通过空格拆分它,并使它们成为float

代码语言:javascript
复制
text = raw_input('row 1: ')
nums = [float(word) for word in text.split()]

另外,您也不希望添加到matrix = [[],[],[]]中--因为最终您将创建一个实际上是三维结构的东西。把这个换成matrix = []..。每次有输入行时都使用matrix.append(nums)

您可能还想考虑如果输入无效的数字会发生什么,或者如果没有所需的数量.但这是另一个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-01-18 04:55:42

代码语言:javascript
复制
def main():
    f = lambda x: map(float, raw_input('Enter row %d for matrix of 3X4.\n' %(x)).split())
    matrix = [f(0),f(1),f(2)]
    print map(sum, zip(*matrix))

main()

上面的代码以一个3X4矩阵作为输入,并在每个列上打印和。

解释:

如果lambda听起来令人望而生畏,您可以使用一个函数,例如:

代码语言:javascript
复制
def rowInput(x):
 return map(float, raw_input('Enter row %d for matrix of 3X4.\n' %(x)).split())

把它叫做

代码语言:javascript
复制
matrix = [rowInput(0), rowInput(1), rowInput(2)]

这里的zip函数每次从每个行中提取一个元素,并对它们进行汇总。

拉链(.)zip(seq1 [,seq2 .]) -> [(seq1,seq2 .),(.)] 返回元组列表,其中每个元组包含每个参数序列中的第一个元素。..。

zip(*matrix)将返回[(col0), (col1), (col2), (col3)]

map函数将第一个参数中的函数应用于第二个参数中的每个元素。例如,map(sum, zip(*matrix))等同于[sum(col0), sum(col1), sum(col2), sum(col3)]

地图(.)映射(函数,序列,序列,.) ->列表 返回将函数应用于参数序列的项的结果列表。..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14392408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档