这是在Python中声明和遍历数组的正确方法,其中每个元素乘以常量值吗?
timeArray = array([0]*1000)
for x in timeArray:
timeArray[x] = x * deltaTime
print(timeArray)
答案 0 :(得分:4)
timeArray = [i*deltaTime for i in range(1000)]
将构建一个包含所需内容的列表。索引到列表需要O(1)时间,与数组相同。 Python列表非常快,它们实际上是implemented as arrays。
您确定要在构建数组/列表时print
timeArray = numpy.arange(1000)
timeArray *= deltaTime
内容吗?
(旁白:如果你想要更快的数组,因为你正在进行数字运算,那么Numpy数组可能是更好的选择:
{{1}}
)
答案 1 :(得分:0)
这可能不那么令人困惑,并且做你想要的。
timeArray = [0 for i in range(1000)]
for x in timeArray:
timeArray[x] *= deltaTime
print(timeArray)
答案 2 :(得分:0)
看起来你真正需要的是numpy数组。内置数组的行为更像列表。
#!/usr/bin/python
from array import array
timeArray = array("f", [1]*1000)
deltaTime = 2
for i, x in enumerate(timeArray):
timeArray[i] = timeArray[i] * deltaTime
print(timeArray)
# but numpy arrays behave more "naturally".
from numpy import array
timeArray = array([1]*1000, dtype="f")
print (timeArray * 2)
numpy数组会将数组的所有元素乘以标量值。 此外,我不确定你的原始数组代码是否真的有效。而且,numpy数组要快得多。