在循环期间为数组赋值 - Python

Mat*_*hon 0 python arrays indexing loops

我目前正在学习Python(我在Matlab中有很强的背景).我想在Python中编写一个循环,其中数组的大小随着每次迭代而增加(即,我可以将新计算的值分配给变量的不同索引).为了这个问题,我使用一个非常简单的循环来生成向量t = [1 2 3 4 5].在Matlab中,编程我想要的循环看起来像这样:

t = [];
for i = 1:5
    t(i,1) = i;
end
Run Code Online (Sandbox Code Playgroud)

我已经设法使用以下代码在Python中实现相同的功能:

result_t = []
for i in range(1,5):
    t = i
    result_t.append(t)
Run Code Online (Sandbox Code Playgroud)

当我们在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) 
Run Code Online (Sandbox Code Playgroud)

为什么我不能直接编写t.append(t)或使用索引(即t[i] = i + b*t)?

Chi*_*xus 6

循环使用时附加元素append()是正确的,它是内置的方法Python lists.

但是,您可以得到相同的结果:

使用列表理解:

result_t = [k for k in range(1,6)]
print(result_t)
>>> [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

使用+运算符:

result_t = []
for k in range(1,6):
    result_t += [k]

print(result_t)
>>> [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

使用特殊方法__iadd__:

result_t = []
for k in range(1,6):
    result_t.__iadd__([k])

print(result_t)
>>> [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)