我目前正在学习 Python(我在 Matlab 方面有很强的背景)。我想用 Python 编写一个循环,其中数组的大小随着每次迭代而增加(即,我可以将新计算的值分配给变量的不同索引)。为了这个问题,我使用一个非常简单的循环来生成向量 t = [1 2 3 4 5]
.在 Matlab 中,编写我想要的循环看起来像这样:
t = [];
for i = 1:5
t(i,1) = i;
end
我已经设法使用以下代码在 Python 中实现了相同的功能:
result_t = []
for i in range(1,5):
t = i
result_t.append(t)
当我们在 Python 中迭代时,有没有更有效的方法来为数组赋值?为什么做不到
t[i,1] = i
(错误:列表索引必须是整数或切片,而不是元组)或 t.append(t) = t
(错误:“int
”对象没有属性“附加”)?最后,为了简单起见,我使用了上面的示例。我知道如果我想生成
vector [1 2 3 4 5]
在 Python 中,我可以使用函数“np.arange(1,5,1)
”提前感谢你的帮助!
-> 我的真正意图不是生成向量 [1 2 3 4 5],而是将计算值分配给向量变量的索引。例如:
result_b = []
b = 2
for i in range(1,5):
t = i + b*t
result_b.append(t)
为什么不能直接写
t.append(t)
或使用索引(即 t[i] = i + b*t
)?
最佳答案
使用 append()
在循环时附加元素是正确的,它是 Python lists
中的内置方法.
但是,您可以得到相同的结果:
使用列表理解:
result_t = [k for k in range(1,6)]
print(result_t)
>>> [1, 2, 3, 4, 5]
使用
+
运营商:result_t = []
for k in range(1,6):
result_t += [k]
print(result_t)
>>> [1, 2, 3, 4, 5]
使用特殊方法
__iadd__
:result_t = []
for k in range(1,6):
result_t.__iadd__([k])
print(result_t)
>>> [1, 2, 3, 4, 5]
关于python - 在循环期间为数组赋值 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330201/