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

标签 python arrays loops indexing

我目前正在学习 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/

相关文章:

python - pyPdf PdfFileReader 与 PdfFileWriter

python - 如何从一个简单的字符串构造一个 timedelta 对象

javascript - 如何使用键和排序顺序对嵌套数组进行排序

javascript - 在 Javascript 中从对象内部引用对象的数组

excel - 在 Excel 中使用 VBA 循环复选框非常慢

python - fasta.gz 上的 SeqIO.parse

python - 尝试使用 SES SendEmail 操作时任务超时

c# - 排序格式不正确

r - 创建对称矩阵的最有效方法

java - 如何添加通过解析获得的值以获得 "value"的 "column"?