问题描述
def column_sum(lst):
return [sum(i) for i in zip(*lst)]
lst = [[1,5,3],[2,7,8],[4,6,9]]
print(column_sum(lst))
此代码用于在嵌套列表中添加逐列数字。这已经 运行没有任何错误。
我还想按列打印数字的总和。所以, 这是我的代码-
sum=0 N,X=list(map(int,input().split()))
for i in range(X):
lst.append([int(x) for x in input().split()[:N]])
print(lst)
print(list(zip(*lst)))
lst2=[sum(i) for i in zip(*lst)]
print(lst2)
所以,我写了和return语句一样的语句
上一个程序的 as- lst2=[sum(i) for i in zip(*lst)]
和我
在这一行中得到一个错误,即 TypeError: 'int' object is not
可调用。
请向我解释为什么?
解决方法
我认为您的代码太复杂了,无法完成任务的简单性。使用索引更容易,更省时。
lst = [[1,5,3],[2,7,8],[4,6,9]]
lc_sum=[]
for i in range(len(lst)):
tmp=0
for j in range(len(lst[i])):
tmp+=lst[i][j]
lc_sum.append(tmp)
lc_sum #[9,17,19]
由于行和列的长度是固定的,因此查看 numpy 的侧面也很重要:
import numpy as np
n_lst = np.asarray(lst)
np.sum(n_lst,axis=1) #[ 9 17 19]
np.sum(n_lst,axis=0) #[ 7 18 20]