对于这个实验室,您将使用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
到目前为止,我的代码如下:
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
是否可以将列表中的两个元素相加在一起?
发布于 2013-01-18 04:45:13
raw_input返回一个字符串,因此需要处理成某种形式的数字。
一个要求输入的简短示例,它通过空格拆分它,并使它们成为float。
text = raw_input('row 1: ')
nums = [float(word) for word in text.split()]另外,您也不希望添加到matrix = [[],[],[]]中--因为最终您将创建一个实际上是三维结构的东西。把这个换成matrix = []..。每次有输入行时都使用matrix.append(nums)。
您可能还想考虑如果输入无效的数字会发生什么,或者如果没有所需的数量.但这是另一个问题。
发布于 2013-01-18 04:55:42
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听起来令人望而生畏,您可以使用一个函数,例如:
def rowInput(x):
return map(float, raw_input('Enter row %d for matrix of 3X4.\n' %(x)).split())把它叫做
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)]。
地图(.)映射(函数,序列,序列,.) ->列表 返回将函数应用于参数序列的项的结果列表。..。
https://stackoverflow.com/questions/14392408
复制相似问题