我正在尝试将一些Matlab代码翻译成Python。不幸的是我没有Matlab所以我无法尝试语法。
我对下面的if语句感到困惑
for i = 1:200
if mod(i,10) == 0
i
end
然后for循环继续计算一些依赖于i的值。 if语句有什么作用?
我是否也可以问稀疏矩阵和用零填充的矩阵之间的区别,例如
A = sparse(n,m)
B = zeros(n,m)
谢谢!
答案 0 :(得分:1)
if
语句检查i除以10的modulus(除法后的余数)是否为0。
如果计算结果为true,则会将数字i
打印到命令窗口。
答案 1 :(得分:1)
创建单独的问题通常更好,但我会尝试解决这两个问题:
1) mod
函数执行模运算,即除法后的余数。如果数字可以被10整除,则mod(i,10) == 0
将为1,否则为0。因此,当数字i是10的倍数时,将执行if语句。
由于没有else
部分,如果条件不正确,则没有任何反应。
只需编写i
(不带分号),即可将i
的当前值打印到命令窗口。因此,示例代码的输出将为10
,20
,...,200
。
2) zeros
命令会创建"正常"维度n x m
的(当然)零的矩阵。 MATLAB还有一个特殊的sparse memory organization。由于稀疏矩阵主要由零组成,因此您不需要使用所有这些零来填充内存,但是您可以保存非零值以及它们的位置。这是使用sparse
功能自动完成的。将稀疏矩阵转换为" normal"格式,您可以使用full
函数。
答案 2 :(得分:1)
天真的Python翻译将是
for i in range(1, 201):
if not i % 10:
print(i)
但我们可以通过指定步长值
来节省一些工作for i in range(10, 201, 10):
print(i)
答案 3 :(得分:0)
请参阅documentation for mod
。在mod(i,10)
除以i
之后,10
会返回余数,其中i
是被除数,10
是除数。 if
语句检查该余数是否等于0
。