Python

Массивы в Python: чем список отличается от массива

В разговорной речи массивом в Python часто называют обычный список. Но технически list и массив из модуля array — разные структуры. Новичку почти всегда стоит начинать со списка

Разберем разницу без путаницы: в обычном Python под массивом часто имеют в виду список, но для числовых данных есть array. Важно понять, когда хватает list, а когда нужен более строгий контейнер

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Базовый пример

Обычный список может хранить разные типы:

items = [1, 'python', True]
print(items)

Массив array хранит значения одного типа:

from array import array

numbers = array('i', [1, 2, 3])
print(numbers)

Разбор по шагам

list подходит почти всегда: в нем можно хранить строки, числа, словари, объекты и смешанные данные. Он гибкий, хорошо работает с циклами, срезами, сортировкой и добавлением элементов

array из стандартного модуля нужен реже. Он хранит значения одного типа и ближе к числовому контейнеру. Новичку важно не пытаться заменить все списки массивами: сначала выбирайте list, а к array переходите, когда точно нужна компактная последовательность однотипных чисел

Практические варианты

Когда нужен list

  • учебные задачи
  • строки, числа, словари вместе
  • список задач или товаров
  • быстрый перебор и фильтрация

Когда смотреть в сторону array

  • много чисел одного типа
  • важно компактнее хранить данные
  • нужно явно ограничить тип элементов

Частые ошибки

Частая ошибка — думать, что для любой задачи нужен настоящий массив. В большинстве учебных и прикладных задач Python-список проще, понятнее и достаточен

Как проверить результат

  • запустить код на обычном примере
  • проверить пустой список
  • проверить список из одного элемента
  • проверить повторы
  • объяснить, меняется исходный список или создается новый
  • вынести действие в функцию, если оно повторяется

Сравнение на практике

Список подходит для смешанных данных:

user = ["Анна", 25, True]
print(user)

Но если все элементы одного смысла, лучше не смешивать типы:

prices = [100, 250, 300]
print(sum(prices))

Массив из array строже:

from array import array

numbers = array("i", [1, 2, 3])
numbers.append(4)
print(numbers)

Если попытаться добавить значение неподходящего типа, код сломается. Для обучения это может быть лишним ограничением, но для больших числовых наборов такая строгость бывает полезна

Что выбрать новичку

Начинайте с list. Он проще, чаще встречается в уроках и подходит для большинства задач: фильтрация, сортировка, поиск, перебор, работа со строками и словарями. К array переходите, когда понимаете, зачем нужен один строгий тип элементов

Практика на закрепление

Чтобы выбрать между списком и массивом, задайте вопрос: данные разнородные или однотипные. Для карточки пользователя удобнее словарь или список словарей. Для большого набора чисел может подойти более строгая структура

users = [
    {"name": "Анна", "age": 25},
    {"name": "Илья", "age": 19},
]

adult_users = []

for user in users:
    if user["age"] >= 18:
        adult_users.append(user)

print(adult_users)

Здесь обычный список подходит идеально: он хранит словари, его легко фильтровать и читать. Массив array в такой задаче не поможет, потому что данные не являются простым набором чисел одного типа

Запомните рабочее правило: если вы учитесь Python или пишете обычный скрипт, берите list. Если уперлись в объем числовых данных, производительность или требования библиотеки, тогда изучайте специализированные варианты

Практика: выберите контейнер под задачу

Представьте две задачи. В первой нужно хранить товары с названием и ценой. Во второй — много числовых измерений температуры. Для товаров удобнее обычный список словарей, для однотипных чисел можно взять array

products = [
    {"title": "Книга", "price": 900},
    {"title": "Клавиатура", "price": 2500},
]

for product in products:
    print(product["title"], product["price"])
from array import array

temperatures = array("f", [21.5, 22.0, 20.8])
temperatures.append(23.1)

print(sum(temperatures) / len(temperatures))

Если данные разные по смыслу и структуре, берите list. Если это длинная последовательность однотипных чисел и вы понимаете, зачем нужен строгий тип, можно использовать array

Как не ошибиться с выбором

Если вы только начинаете писать на Python, почти всегда начинайте со списка. Он проще, понятнее и лучше подходит для смешанных данных. В списке можно держать строки, числа, словари, объекты и даже другие списки. Поэтому для задач вроде списка дел, каталога товаров или результатов парсинга list будет нормальным выбором

array стоит брать, когда все элементы одного числового типа и вам действительно важна более строгая структура. Для большинства учебных задач это не требуется. Если сомневаетесь, напишите решение на list, а потом отдельно проверьте, есть ли реальная причина переходить на array

Когда список лучше массива

Обычный список лучше подходит для данных, которые меняются по структуре. Например, сегодня у задачи есть только название, завтра добавится срок, потом статус и исполнитель. В list можно хранить словари с такими полями без лишней подготовки

tasks = []
tasks.append({"title": "проверить код", "status": "new"})
tasks.append({"title": "добавить тест", "status": "done"})

active = [task for task in tasks if task["status"] == "new"]
print(active)

Для такого сценария array только усложнит задачу. Он не предназначен для словарей, строковых полей и смешанных структур

Итоговая практика: два варианта хранения данных

Закрепите разницу на одном примере. Список подойдет для задач, где элементы имеют разные поля. array подойдет для плотной последовательности однотипных чисел

from array import array

tasks = [
    {"title": "написать код", "done": False},
    {"title": "проверить", "done": True},
]

durations = array("i", [25, 30, 15])

print(tasks[0]["title"])
print(sum(durations))

Если вы не можете назвать причину для array, выбирайте list. Это нормальный выбор для большинства учебных и прикладных задач на Python

Практический ориентир простой: если вы описываете предметы, действия, настройки или записи с несколькими полями, выбирайте список. Если вы храните длинный ряд однотипных чисел и готовы работать с ограничениями типа, можно рассмотреть array. В остальных случаях список будет понятнее и для вас, и для человека, который потом прочитает код

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x