做一个练习题,如下所示:取一个“数字平方”作为参数,并返回列和的列表。在
例如
square = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]
结果应为=
^{pr2}$到目前为止我所拥有的:
def column_sums(square):
col_list = []
for i in range(len(square)):
col_sum = 0
for j in range(len(square[i])):
col_sum += square[j]
col_list.append(col_sum)
return col_list
所以我想我已经列出了所有的参数,所有的索引都是正确的,但是我被卡住了,因为我得到了一个错误
builtins.TypeError: unsupported operand type(s) for +=: 'int' and 'list'
如果我引用了我认为的列表中的元素,则不应该发生这种情况。在
另外,在这里使用SUM命令可能更容易,但无法找到一种干净地使用它的方法。在
通过索引从单独的列表中添加元素。在
它应该是
col_sum += square[j][i]
,因为您想访问位于i
位置的列表的j
位置的元素。在您应该将求和线改为:
因为square[j]是
j'th
行(list),但您需要当前列,即该行中的i'th
元素。在但下面是我使用
^{pr2}$sum
和列表理解的解决方案:一个更简单的解决方案是使用
zip
将列表列表转置并在每个新的子列表中使用sum
:
^{pr2}$zip(*square)
解压缩列表列表,并连续返回每个列中的所有项(压缩的为元组)。在您也可以使用^{} 来实现这一点,方法是将
axis
参数设置为0
,意思是沿行求和(即每列求和):相关问题 更多 >
编程相关推荐