我正在教授剑桥考试委员会的 A 级类(class)大纲。实践论文中的一个典型问题是:
In a programming language of your choice, declare an array of ten integers and then initializes it.
我有这个:
myArray = [] #create the array
for i in range(10): # initializes to 0
myArray.append(0)
我相信这是大多数人在 Python 中会做的事情?然而,与 Pascal 等不同,它并没有严格回答问题,因为 Python 中的列表本质上是动态数组,但增加了不限制每个元素的数据类型的问题。我可以像在 Pascal 中那样声明一个特定大小的数组和类型,而不是一个空的动态列表,没有任何类型的循环并限制数组的类型吗?
类似于(伪代码):
myArray[10] : integer
这不是一个商业问题,而是一个教育问题。
最佳答案
您可以尝试使用 array
module指定数组的类型:
import array
a = array.array('i') # Define an integer array.
然后您可以将所需的元素添加到数组中。不过,我不确定您是否可以预定义数组的大小。如果你想要一个包含十个整数元素的数组,每个元素都为零,你可以这样做:
a = array.array('i', [0]*10)
如文档中所述,'i'
强制数组的元素为整数。如果您尝试在整数数组中插入 float ,Python 2.6 将抛出 DeprecationWarning
,但会将 float 转换为 int:
>>> a[0]=3.14159
>>> a
>>> array('i', [3, 0, 0, 0, 0, 0, 0, 0, 0, 0])
或者,您可以使用 numpy
package ,它允许您定义数组的大小和类型。
import numpy as np
a = np.empty(10, dtype=int) # Define a integer array with ten elements
np.empty
只是在内存中为数组保留一些空间,并没有初始化它。如果你需要一个 0 的数组,你可以这样做:
a[:] = 0
或者直接使用np.zeros
function :
a = np.zeros(10, dtype=int)
同样,在整数数组中插入一个 float 会自动将 float 转换为整数。
请注意 numpy 和 array
之间的区别:一旦您在 numpy
中定义了一个数组,您就无法更改其大小,而无需重新创建一个数组。从这个意义上说,它满足了“10 个且只有 10 个整数”的要求。相比之下,array.array
对象可以看作是具有固定元素类型的列表:数组是动态的,您可以增加其大小。
关于python - 你能在 Python 中创建传统的固定长度和类型的数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010474/