Python 数据类型 - 数组

Jinku Hu 2023年1月30日
  1. 数组定义
  2. 数组索引
  3. 负索引
  4. 遍历数组
  5. 更新数组
  6. 修改数组的不同方法
  7. 从数组中删除元素
  8. 数组方法
Python 数据类型 - 数组

在本节中,你将学习如何在 Python 中创建和访问数组的元素。

数组是相同数据类型的元素的集合。数组和列表之间的主要区别是列表可以具有不同数据类型的元素。

在 Python 编程中,要创建数组,你需要导入 array 模块,因为数组不是基本数据类型。

from array import *

数组定义

要声明数组,你必须遵循以下语法:

arrayName = array(typecode, [initializers])

在这里,arrayName 是数组的名称,typecode 确定数组的数据类型,initializers 是数组中的值。

你将在本节稍后部分了解有关 typecode 参数的更多信息。

我们来看下面的例子:

a = array("i", [1, 2, 3, 4])

数组的名称是 atypecodei,它指定数组的值将是整数数据类型的。如果尝试在该数组中存储除整数以外的值,将引发错误:

>>> a=array('i', [1,2,3.4,4])
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a=array('i', [1,2,3.4,4])
TypeError: integer argument expected, got float

让我们检查包含一些整数的数组的示例:

>>> from array import *
>>> a = array('i', [1,2,3,4])
>>> for i in a:
    print(i)
1
2
3
4

typecode 参数

参数 含义
b 1 个字节的有符号整数
B 1 个字节的无符号整数
u 2 个字节的 unicode 字符
h 2 个字节的有符号整数
H 2 个字节的无符号整数
i 2 个字节的有符号整数
I 2 个字节的无符号整数
l 4 个字节的有符号整数
L 4 个字节的无符号整数
f 4 个字节的浮点数
d 8 个字节的浮点数

数组索引

你可以使用索引运算符 [] 来获取数组的元素。

使用索引运算符 [] 检索数组的元素

>>> a = array('i', [1,2,3,4])
>>> print("First element of array =", a[0])
First element of array = 1
>>> print("Second element of array =", a[1])
Second element of array = 2

使用 index(x) 方法获取给定值的索引

index(x) 方法返回首次出现 x 的最小索引。

>>> a = array('i', [1,2,3,4])
>>> print("1 is found at location:", a.index(1))
1 is found at location: 0
>>> print("4 is found at location:", a.index(4))
4 is found at location: 3

负索引

类似于其他 Python 序列数据类型,如字符串、列表、元组,range 对象等,你也可以使用负索引来访问数组中的元素。

>>> a = array('i', [1,2,3,4])
>>> print("last element of array:",a[-1])
last element of array: 4

遍历数组

首先,找到数组的长度:

数组 len() 方法

len() 方法返回数组中的元素数。

>>> a = array('i', [1,2,3,4])
>>> print("length of a:", len(a))
length of a: 4

遍历数组

你可以使用 for 循环来遍历数组的元素。

>>> a = array('i', [1,2,3,4])
>>> for i in range(len(a)):
    print(a[i])
1
2
3
4

或者,

>>> a = array('i', [1,2,3,4])
>>> for i in a:
    print(i)
1
2
3
4

更新数组

append()

你可以使用数组 append() 方法将一个元素附加到数组的末尾。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.append(10)
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10])

insert(i, x)

你可以使用 insert(i, x) 方法将元素 x 插入给定索引 i

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.insert(3,44)
>>> print(a)
array('i', [1, 2, 3, 44, 4, 5, 7, 8, 9])

extend(x)

append(x)x 元素作为一项添加到数组。extend(x) 方法是通过在给定对象中附加所有 x 中的元素来扩展数组的方法。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.extend([10,11,12,13,14,15])
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15])

警告

如果 x 是另一个数组,则它应具有完全相同的数据类型代码,否则将引发 TypeError。如果 x 不是 Python 数组,则它必须是可迭代的,并且其元素必须与要扩展的数组具有相同的数据类型。

fromlist()

fromlist() 将列表中的元素添加到数组中。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> l = [10,11]
>>> a.fromlist(l)
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11])

修改数组的不同方法

reverse()

reverse() 反转数组。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.reverse()
>>> print(a)
array('i', [9, 8, 7, 5, 4, 3, 2, 1])

+ 运算符

可以使用 + 运算符将两个数组连接起来:

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> b = array('i', [10,11])
>>> print(a + b)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11])

* 运算符

* 运算符将数组中的元素重复特定的次数。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a = a * 2
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 1, 2, 3, 4, 5, 7, 8, 9])

在此,元素重复两次。

从数组中删除元素

del 语句从数组中删除一个或多个元素。你还可以使用 del 删除整个数组:

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> del a[3]
>>> print(a)
array('i', [1, 2, 3, 5, 7, 8, 9])
>>> del a           #entire array is deleted

remove(x)

remove() 从数组中删除第一次出现的 x

>>> a = array('i', [1,2,3,4,5,7,8,9,3])
>>> a.remove(3)
>>> print(a)
array('i', [1, 2, 4, 5, 7, 8, 9, 3])

pop()

pop() 将删除并返回数组中的最后一个元素。

>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.pop()
9
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8])

数组方法

下表描述了数组方法:

方法 描述
append() 在数组末尾添加一个元素
extend() 向数组添加多个元素。将给定数组的所有元素添加到另一个数组
insert() 在所需位置添加元素
remove() 从数组中删除特定元素
pop() 从给定位置删除元素并返回该元素
clear() 从数组中删除所有元素
index() 返回数组中第一个匹配元素的索引
count() 返回匹配的元素总数
sort() 以升序对数组的元素进行排序
reverse() 反转数组元素的顺序
copy() 返回一个数组的拷贝
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook