Сложение array и list в Python

Сложение array и list в Python

@python_quiz

Разберем этот квиз

Коротко: что делает код

python

Попробуем понять поведение и почему оно отличается от добавления в обычный list.

Ключевые отличия: array vs list

  • array из модуля array — это упрощённый массив чисел, привязанный к одному typecode (например, 'i' для целых).
  • list — общий контейнер произвольных Python-объектов.
  • Операция + для array реализована так, чтобы складывать только другие array с тем же typecode. Сложение с list не поддерживается и приведёт к исключению.

Что произойдёт при запуске

Выполнение приведённого кода вызовет исключение типа TypeError. Пример трассировки:

python

Пример ошибки (формат может немного отличаться в зависимости от версии Python):

Причина: метод сложения (и операции вроде += для array) ожидает другой array совместимого typecode.

Правильные способы добавить элемент/объединить

Ниже — варианты, которые работают, и примеры:

1) Добавить один элемент — append

python

2) Объединить с другим array

python

3) Расширить array последовательностью (list тоже подойдёт, если элементы совместимы)

python

4) Преобразовать в list для операций с list, затем при необходимости вернуть в array

python

Анализ вариантов ответов (коротко)

  • Вариант с выводом array('i', [1, 2, 3, 4]) — описывает поведение при корректной конкатенации с другим array, но не соответствует работе с list.
  • Вариант с выводом [1, 2, 3, 4] — соответствует результату при преобразовании в list и сложении, но не для исходного выражения.
  • Вариант о создании нового списка без вывода — неверен: выражение не создаёт silently новый список, а вызывает ошибку при попытке сложить несоответствующие типы.
  • Вариант про возникновение TypeError — соответствует фактическому поведению при попытке сложить array и list.

Вывод

Модуль array строг по типам: операции вроде + требуют другого array с тем же typecode. Для добавления элементов используйте append, extend или сначала преобразуйте в list — в зависимости от задачи. Это помогает избежать неожиданных исключений и сохраняет ожидаемую семантику при работе с числовыми массивами.

Report Page