English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本文中,您将学习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' является кодом типа. Это определяет тип массива в процессе создания.
Обычные коды типов:
Код | Типы 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)
Мы можем использоватьУказание del в PythonУдаление одного или нескольких элементов из массива.
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).