【发布时间】:2013-11-24 04:49:54
【问题描述】:
我正在尝试编写一个对列表奇数列中的整数求和的程序
def sum_of_odd_cols(x):
for j in range(len(x)):
odds=[x[k][j] for k in range(len(x)) if j%2!=0]
return sum(odds)
x=[[1,2,5],[3,4,6],[7,8,9]]
print(sum_of_odd_cols(x))
我从中得到的是“0”,为什么会这样?
还有一个问题
x=[[1,2,5],[3,4,6],[7,8,9]]
for j in range(len(x)):
col=[column[j] for column in x]
这似乎也创建了列表 x 中的列的列表,但是我不明白这是如何工作的 'column' 是 python 中的内置函数吗?
【问题讨论】:
-
示例输入和预期输出会很好。
-
返回
0的原因是因为你的odds数组是空的。 -
在循环的每次迭代中重新分配
odds或col并不能达到您想要的效果。 -
odds=[x[k][j] for k in range(len(x)) if j%2!=0]位也有问题。我不认为那是你想要做的。 -
至于第二件事,
column不是内置函数。它是列表推导的迭代变量;请参阅for column in x部分。我建议您阅读 Pythonfor循环的工作原理。像您的第一个 sn-p 使用的 range-len 迭代几乎从来都不是一个好主意。
标签: python list sum list-comprehension