Работа с массивами в языке Python

Раздел: Основы 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] # True

Python 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]] - не изменился
- Python разница списков (разница между списками и кортежами в python)
- как сделать массив python (создание массива (списка) в python)
- списки в языке python (списки в python)

Расширенные примеры работы с массивами

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

Массивы данных в Python - comments

En
массивы данных python 3 (python)