Работа с массивами в языке Python
Списки как основной тип массивов в Python
Как создать список?
Список (list) является встроенным типом для хранения упорядоченных коллекций элементов. Для создания списка используются квадратные скобки:
my_list = [10, 20, 30, 'текст', True]значения списка числа python (итерация по значениям списка чисел в python)
Также можно использовать конструктор list():
empty_list = list()
numbers = list(range(5)) # [0, 1, 2, 3, 4]словарь set python (словарь и set в python)
В отличие от массивов в других языках, список может содержать элементы разных типов. Это делает его гибким, но может приводить к снижению производительности при работе с большими однотипными данными.
Как получить доступ к элементам?
Индексация начинается с нуля. Можно использовать отрицательные индексы для обращения с конца:
my_list[0] # 10
my_list[-1] # TruePython dict set (словарь и множество в python)
Как изменить или добавить элементы?
Присваивание по индексу изменяет элемент. Для добавления используются методы append() (в конец), insert() (в произвольную позицию), extend() (добавить коллекцию). Удаление: remove(), pop(), del.
my_list.append(100)
my_list.insert(0, 'начало')
my_list.remove('текст')
popped = my_list.pop()типы структур python (типы структур данных в python)
Какие методы для работы со списками существуют?
Основные методы: sort(), reverse(), count(), index(), copy(). Все они изменяют список или возвращают информацию.
Когда стоит использовать модуль array?
Модуль array предлагает массивы с фиксированным типом данных (например, целые числа или числа с плавающей точкой). Это позволяет экономить память и ускоряет операции, если типы всех элементов однородны. Создание:
from array import array
arr = array('i', [1, 2, 3]) # 'i' - signed intкортеж чисел python (кортеж чисел в python)
Массивы из module array поддерживают те же методы, что и списки, но не могут содержать элементы разных типов. Они полезны при работе с большими числовыми наборами, где важна производительность.
Какие преимущества дают кортежи?
Кортеж (tuple) неизменяем: после создания его нельзя изменить. Кортежи занимают меньше памяти и могут использоваться в качестве ключей словарей. Создаются круглыми скобками:
point = (10, 20)
immutable = 1, 2, 3 # без скобокязык программирования python массивы (массивы (списки) в python)
Кортежи подходят для хранения фиксированных наборов данных (координаты, конфигурации).
Когда нужны неизменяемые последовательности: range?
range создаёт арифметическую прогрессию чисел. Используется в циклах, не хранит все значения в памяти (ленивая последовательность). Пример:
r = range(0, 10, 2) # 0,2,4,6,8
list(r) # преобразование в списокмассивы данных python 3 (массивы данных в python)
range эффективен для итераций по последовательности чисел.
Типичные ошибки и их решения
IndexError: list index out of range возникает при попытке доступа к индексу, превышающему длину списка. Решение: проверять длину перед обращением (len()), использовать обработку исключений.
lst = [1,2,3]
# lst[5] # IndexError
if len(lst) > 5:
print(lst[5])
else:
print('индекс вне диапазона')одномерные массивы на языке программирования python (одномерные массивы в python)
Изменение списка во время итерации может привести к пропуску элементов или непредсказуемому поведению. Решение: итерироваться по копии списка (lst.copy()) или использовать срез.
lst = [1,2,3,4]
for item in lst[:]: # копия среза
if item % 2 == 0:
lst.remove(item)
print(lst) # [1, 3]последовательности в python и способы их реализации (последовательности в python и способы их реализации)
Неглубокое копирование вложенных списков: при копировании через copy() или срез создаётся новый список, но вложенные объекты остаются общими. Для полной независимости используется copy.deepcopy().
import copy
original = [[1,2],[3,4]]
shallow = original.copy()
shallow[0][0] = 'X'
print(original) # [['X',2],[3,4]]
deep = copy.deepcopy(original)
deep[0][0] = 'Y'
print(original) # [['X',2],[3,4]] - не изменился
Расширенные примеры работы с массивами
1. Генерация списков с помощью list comprehension
squares = [x**2 for x in range(10)]
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2. Многомерные списки (матрицы)
matrix = [[1,2,3],[4,5,6],[7,8,9]]
# доступ к элементу 5
print(matrix[1][1]) # 5
# изменение строки
matrix[0] = [10,11,12]
print(matrix)
5 [[10, 11, 12], [4, 5, 6], [7, 8, 9]]
3. Срезы с шагом
a = [0,1,2,3,4,5,6,7,8,9]
print(a[1:9:2]) # [1,3,5,7]
print(a[::-1]) # обратный порядок
[1, 3, 5, 7] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
4. Копирование: поверхностное и глубокое
import copy
original = [[1,2],[3,4]]
shallow = original.copy()
print('shallow:', shallow)
shallow[0][0] = 'X'
print('original:', original) # изменён
deep = copy.deepcopy(original)
deep[0][0] = 'Y'
print('original after deep:', original)
print('deep:', deep)
shallow: [[1, 2], [3, 4]] original: [['X', 2], [3, 4]] original after deep: [['X', 2], [3, 4]] deep: [['Y', 2], [3, 4]]
5. Использование map и filter с lambda
numbers = [1,2,3,4,5,6]
squares_map = list(map(lambda x: x**2, numbers))
print('map:', squares_map)
even_filter = list(filter(lambda x: x%2==0, numbers))
print('filter:', even_filter)
map: [1, 4, 9, 16, 25, 36] filter: [2, 4, 6]
6. Модуль array для числовых массивов
from array import array
arr = array('i', [10,20,30])
arr.append(40)
print(arr)
print(arr[1])
array('i', [10, 20, 30, 40])
20
7. Обработка ошибки IndexError
lst = [1,2,3]
try:
print(lst[10])
except IndexError as e:
print(f'Ошибка: {e}')
Ошибка: list index out of range