English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python базовый курс

Python управление потоком

Функции Python

Типы данных Python

Python операции с файлами

Python объекты и классы

Python дата и время

Python продвинутые знания

Python 参考手册

Массивы в Python

在本文中,您将学习Python数组,数组和列表之间的区别,以及如何以及何时使用示例来使用它们。

在编程中,数组是相同类型的元素的集合。

数组在Java,C / C ++,JavaScript等大多数编程语言中都很流行。但是,在Python中,它们并不常见。人们经常谈论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 charint1
'B'unsigned charint1
'u'Py_UNICODEUnicode2
'h'signed shortint2
'H'unsigned shortint2
'i'signed intint2
'I'unsigned intint2
'l'signed longint4
'L'unsigned longint4
'f'floatfloat4
'd'doublefloat8

Мы не будем обсуждать различные типы 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).