在本文中,您将学习Python数组,数组和列表之间的区别,以及如何以及何时使用示例来使用它们。
数组在Java,C / C ++,JavaScript等大多数编程语言中都很流行。但是,在Python中,它们并不常见。人们经常谈论Python数组时,他们谈论的是Python列表。如果您如果不知道什么是列表,则绝对应该查看Python列表文章。
我们可以将列表视为数组。但是,我们不能限制列表中存储的元素的类型。例如:
a = [1, 3.5, "Hello"]
如果使用array模块创建数组 ,则数组的所有元素必须为相同的数字类型。
import array as arr a = arr.array('d', [1, 3.5, "Hello"]) // Error
您可能从上面的示例中猜到了,我们需要导入array模块以创建数组。例如:
import array as arr a = arr.array('d', [1.1, 3.5, 4.5]) print(a)
在这里,我们创建了一个float类型数组。字母'd'是类型代码。这确定了创建过程中数组的类型。
常用的类型代码:
Code | C 类型 | Python 类型 | 最小字节 |
---|---|---|---|
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'u' | Py_UNICODE | Unicode | 2 |
'h' | signed short | int | 2 |
'H' | unsigned short | int | 2 |
'i' | signed int | int | 2 |
'I' | unsigned int | int | 2 |
'l' | signed long | int | 4 |
'L' | unsigned long | int | 4 |
'f' | float | float | 4 |
'd' | double | float | 8 |
我们将不在本文中讨论不同的C类型。在整篇文章中,我们将使用两种类型代码:'i'整数和'd'浮点数。
注意:'u'自版本3.3起,不推荐使用Unicode字符的类型代码。尽可能避免使用它。
我们使用索引来访问数组的元素:
import array as arr a = arr.array('i', [2, 4, 6, 8]) print("第一个元素:", a[0]) print("第二个元素:", a[1]) print("最后一个元素:", a[-1])
请记住,索引从0(而不是1)开始,类似于列表。
我们可以使用切片运算符访问数组中的一系列项目:。
import array as arr numbers_list = [2, 5, 62, 5, 42, 52, 48, 5] numbers_array = arr.array('i', numbers_list) print(numbers_array[2:5]) # 第3-第5个元素 print(numbers_array[:-5]) # 从开始到第4个元素 print(numbers_array[5:]) # 从第6个元素到末尾 print(numbers_array[:]) # 从开始到末尾
运行该程序时,输出为:
array('i', [62, 5, 42]) array('i', [2, 5, 62]) array('i', [52, 48, 5]) array('i', [2, 5, 62, 5, 42, 52, 48, 5])
数组是可变的;它们的元素可以类似列表的方式进行更改。
import array as arr numbers = arr.array('i', [1, 2, 3, 5, 7, 10]) # 改变第一个元素 numbers[0] = 0 print(numbers) # 输出: array('i', [0, 2, 3, 5, 7, 10]) # 改变第3到第5个元素 numbers[2:5] = arr.array('i', [4, 6, 8]) print(numbers) # 输出: array('i', [0, 2, 4, 6, 8, 10])
我们可以使用append()方法将一个项目添加到列表中,或者使用extend()方法将多个项目添加到列表中 。
import array as arr numbers = arr.array('i', [1, 2, 3]) numbers.append(4) print(numbers) # 输出: array('i', [1, 2, 3, 4]) # extend()将iterable追加到数组的末尾 numbers.extend([5, 6, 7]) print(numbers) # 输出: array('i', [1, 2, 3, 4, 5, 6, 7])
我们可以使用+运算符连接两个数组。
import array as arr odd = arr.array('i', [1, 3, 5]) even = arr.array('i', [2, 4, 6]) numbers = arr.array('i') # 创建一个空的整数数组 numbers = odd + even print(numbers)
我们可以使用从数组中删除一个或多个项目。
import array as arr number = arr.array('i', [1, 2, 3, 3, 4]) del number[2] # 删除第三个元素 print(number) # 输出: array('i', [1, 2, 3, 4]) del number # 删除整个数组 print(number) # 错误:没有定义数组
我们可以使用remove()方法删除给定项目,也可以使用 方法删除给 pop()定索引处的项目。
import array as arr numbers = arr.array('i', [10, 11, 12, 12, 13]) numbers.remove(12) print(numbers) # 输出: array('i', [10, 11, 12, 13]) print(numbers.pop(2)) # 输出: 12 print(numbers) # 输出: array('i', [10, 11, 13])
列表比数组灵活得多。它们可以存储不同数据类型的元素,包括字符串。而且,列表比数组要快。而且,如果您需要对数组和矩阵进行数学计算,则最好使用NumPy库之类的方法。
除非您真的需要数组(与C代码接口可能需要数组模块),否则不要使用它们。