python - 你能在 Python 中创建传统的固定长度和类型的数组吗?

标签 python

我正在教授剑桥考试委员会的 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/

相关文章:

javascript - 如何获取页面上所有链接的属性值?

python - 与 Vampire Numbers 列表比较失败

python - 如何解决 "CASCADE() missing required positional arguments"TypeError

Python MySQLdb "error: Microsoft Visual C++ 14.0 is required"即使已安装

python - 在优化函数 scipy 中动态创建变量

python - pycharm 中的 Jupyter notebook 不显示内联图

python - 如何在Python中编写正则表达式?我想写R.E.对于以下示例

Python:Monkeypatching 一个对象的方法

python - 快速搜索大型结构化 numpy 数组

python - 在 python 中出现几个回溯错误