Python
Как создать массив в Python: список, array и NumPy простыми словами
В Python под «массивом» чаще всего имеют в виду обычный список list. Он создается через квадратные скобки и может хранить несколько значений в одном имени
numbers = [10, 20, 30, 40]
print(numbers)
Результат:
[10, 20, 30, 40]
Если вы только начинаете, используйте именно список. В учебных задачах «создать массив», «создать список», «создать набор чисел» почти всегда решается через list
Как создать пустой массив
Пустой список создается так:
numbers = []
Потом в него можно добавлять элементы через append()
numbers = []
numbers.append(10)
numbers.append(20)
numbers.append(30)
print(numbers)
Результат:
[10, 20, 30]
Такой вариант удобен, когда значения появляются постепенно: пользователь вводит числа, программа читает файл, цикл что-то считает и добавляет результат в список
Как создать массив строк
Список может хранить не только числа, но и строки:
names = ["Анна", "Илья", "Мария"]
print(names)
Получить первый элемент можно по индексу 0:
print(names[0])
Результат:
Анна
В Python индексы начинаются с нуля. Первый элемент имеет индекс 0, второй — 1, третий — 2
Как создать массив из чисел от 1 до 10
Если нужны числа по порядку, удобно использовать range()
numbers = list(range(1, 11))
print(numbers)
Результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Правая граница в range(1, 11) не включается, поэтому чтобы получить числа до 10, пишем 11
Как создать двумерный массив
Двумерный массив в Python обычно делают как список списков. Например, таблица 3 на 3:
table = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
print(table[0][0])
print(table[1][2])
Результат:
1
6
table[0] берет первую строку, а table[0][0] берет первый элемент первой строки
Важная ошибка с двумерными списками
Новички иногда пишут так:
table = [[0] * 3] * 3
table[0][0] = 1
print(table)
Результат может удивить:
1, 0, 0], [1, 0, 0], [1, 0, 0
Так происходит потому, что все строки ссылаются на один и тот же внутренний список. Для таблицы лучше создавать строки через генератор списка:
table = [[0 for _ in range(3)] for _ in range(3)]
table[0][0] = 1
print(table)
Теперь изменится только один элемент:
1, 0, 0], [0, 0, 0], [0, 0, 0
А что такое array.array
В Python есть модуль array, который хранит элементы одного типа компактнее, чем обычный список. Для новичка он нужен редко, но знать о нем полезно
from array import array
numbers = array("i", [1, 2, 3, 4])
print(numbers)
"i" означает целые числа. Такой массив строже обычного списка: он рассчитан на элементы одного типа. Если вы просто решаете учебную задачу, обычный list почти всегда понятнее
Когда нужен NumPy
Если вы занимаетесь анализом данных, математикой, машинным обучением или большими таблицами чисел, часто используют NumPy-массивы. Это уже не базовый список, а отдельная библиотека
import numpy as np
numbers = np.array([1, 2, 3, 4])
print(numbers * 2)
Результат:
[2 4 6 8]
В обычном списке numbers * 2 повторил бы список два раза, а в NumPy умножение применяется к каждому числу. Поэтому NumPy удобен для расчетов, но для первых задач по Python начинать лучше с list
Как выбрать вариант
Если нужно просто хранить несколько значений, берите list
Если нужна таблица, берите список списков
Если нужно компактно хранить числа одного типа без внешних библиотек, можно посмотреть array.array
Если нужны серьезные числовые вычисления, таблицы и векторные операции, берите NumPy
Мини-практика
Создайте файл array_practice.py и сделайте список оценок:
marks = [5, 4, 5, 3, 4]
average = sum(marks) / len(marks)
print("Оценки:", marks)
print("Средняя оценка:", average)
После запуска добавьте еще одну оценку через append() и посмотрите, как изменится среднее значение. Потом попробуйте вывести первую оценку, последнюю оценку и количество оценок через len(marks)
Частые ошибки
Первая ошибка — искать в Python отдельный синтаксис массивов как в C или Java. В большинстве учебных задач нужен обычный список list
Вторая ошибка — забывать, что индексы начинаются с нуля. Последний элемент можно получить как items[-1]
Третья ошибка — создавать двумерный список через [[0] 3] 3. Внутренние строки будут связаны между собой, и изменение одной строки затронет остальные
Четвертая ошибка — использовать NumPy там, где хватило бы списка. NumPy мощный, но для первых задач он часто добавляет лишнюю сложность
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- append в Python: как добавить элемент в список и не поймать None
- Как добавить в список элемент: append, extend и insert в Python
- Как округлить число в Питоне до целого: round, int, floor и ceil
- Как сделать калькулятор на Питоне: простой код для начинающих