对Python中的数组感到困惑

1 投票
3 回答
642 浏览
提问于 2025-04-16 19:55

在Python中,声明一个数组并遍历它的方式是否正确?这里的每个元素都要乘以一个常量值。

timeArray = array([0]*1000)

for x in timeArray:
    timeArray[x] = x * deltaTime
    print(timeArray)

3 个回答

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数组的速度要快得多。

0

这样可能更容易理解,而且能达到你想要的效果。

timeArray = [0 for i in range(1000)]

for x in timeArray:
    timeArray[x] *= deltaTime
    print(timeArray)
4
timeArray = [i*deltaTime for i in range(1000)]

这段话的意思是,你可以创建一个包含你想要内容的列表。访问列表中的某个元素的速度是O(1),这和数组是一样的。Python中的列表非常快,实际上它们是作为数组来实现的。

你确定要在列表构建的过程中就打印出它的内容吗?

(顺便说一下,如果你需要更快的数组,因为你在进行大量的数字运算,那么使用Numpy数组可能会更合适:

timeArray = numpy.arange(1000)
timeArray *= deltaTime

)

撰写回答