Как массивы и списки работают на Python

Массивы и списки являются одними из наиболее полезных структур данных в программировании. Сегодня я расскажу вам основы, а также покажу несколько простых примеров Python массивов.

Условия

Чтобы изучить рассматриваемые в этой статье концепции, вам не требуется заранее много знать. Базовые знания парадигмы программирования и Python желательны, но это не обязательно.

Рассматриваемые в этой статье принципы могут быть применены в любом языке программирования. Я буду демонстрировать примеры на Python. Это простой для изучения язык предоставляет превосходную платформу для понимания того, что происходит. В дополнение к этому существует отличный онлайн-интерпретатор Python.

Структуры данных

Структура данных - это способ эффективного хранения данных. Легко запутаться, потому что структуры данных не являются типом данных, которые сообщают компилятору (или в случае Python интерпретатору), как их использовать. Структуры данных определяют операции, которые могут выполняться и реализуют конкретные правила и положения.

Возможно, вы слышали о линейных типах данных (элементы последовательны):

  • Массив;
  • Матрица;
  • Таблица поиска.

Аналогичным образом, списки часто содержат правила и методы для регулирования того, как они работают. Типы списков:

  • Связный список;
  • Двойной связный список;
  • Список массивов или динамический массив.

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

Массив

Python массивы и списки представляют собой простой набор связанных значений, которые называются элементами. Обычно это любой тип данных, включая объекты или другие списки! При работе с массивами все данные должны быть одинаковыми - нельзя хранить вместе строки и целые числа. Вам почти всегда придется указывать, сколько элементов нужно хранить. Динамические массивы существуют, но проще начать с массивов фиксированной длиной.

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

from array import array
numbers = array('i', [2, 4, 6, 8])
print numbers[0]

Первая строка импортирует модуль array, необходимый для работы с массивами. Вторая строка создает новый массив numbers и инициализирует его значениями 2, 4, 6 и 8. Каждому элементу присваивается целочисленное значение, называемое ключом или индексом. Ключи начинаются с нуля, поэтому [0] будет обращаться к первому элементу (2):

Python_Array_4

Вам наверно интересно, для чего используется «i». Это typecode, который сообщает Python, что массив будет хранить целые числа. Обычно подобные вещи в Python не нужны. Причина этого проста. Массивы в Python основаны на базовых C-массивах операционной системы. Это означает, что они быстрые и стабильные, но не всегда могут придерживаться синтаксиса Python.

Нельзя хранить элементы разных типов в этих массивах. Допустим, вы захотели сохранить строку «makeuseof.com»:

numbers = array('i', [2, 4, 6, "makeuseof.com"])

Это вызовет исключение при работе с Python массивом строк:

Python_Arrays_5

Вот как можно вывести все элементы:

print numbers
Python_Arrays_6

Этот метод доступа к элементам массива работает хорошо, и идеально подходит для решения задачи. Плохо то, что это - доступ ко всему массиву.

Каждый язык программирования реализует цикл, который идеально подходит для итерации (циклизации) над элементами списка.

Наиболее распространенные циклы while и for. Python делает это еще проще, предоставляя цикл for in:

for number in numbers:
    print number

Обратите внимание на то, что вам не нужно обращаться к элементам по их ключу. Это лучший способ работы с массивом. Альтернативный способ перебора списка - это цикл for:

for i in range(len(numbers)):
    print numbers[i]

Этот пример делает то же самое, что и предыдущий. Но в нем нужно указать количество элементов в массиве (len (cars)), а также передать i в качестве ключа. Это почти тот же код, который выполняется в цикле for in. Этот способ обеспечивает большую гибкость и выполняется немного быстрее (хотя цикла for in в большинстве случаев более чем достаточно).

Списки

Теперь, когда вы знаете, как работают Python двумерные массивы, давайте посмотрим на список. Иногда он может сбивать с толку, поскольку люди используют различные взаимозаменяемые термины, но списки - это массивы ... отчасти.

Список - это особый тип массива. Различие состоит в том, что списки могут содержать смешанные типы данных. Помните, массивы должны содержать элементы одного типа. Списки в Python просты:

cars = ['Ford', 'Austin', 'Lancia']

Заметили, что вам не нужно импортировать модуль array?

Этот синтаксис объявляет список под названием cars. В квадратных скобках объявляется каждый элемент списка. Каждый элемент является строкой, поэтому их объявляют внутри кавычек. Python знает, что это объект, поэтому оператор print выводит содержимое списка:

print cars
Python_Array_1

Как и в случае с массивом, можно осуществлять Python сортировку массива с помощью циклов:

for car in cars:
    print car
Python_Array_3

Настоящий фокус со списками - их смешанный тип. Добавьте дополнительные данные:

cars = ['Ford', 'Austin', 'Lancia', 1, 0.56]

Это даже не вызвало исключения:

Python_Array_7

Также просто добавить новые элементы в список (что невозможно с массивами):

cars = ['Ford', 'Austin']
print cars
cars.append('Lancia')
print cars
Python_Array_8

Можно объединить два списка в один:

cars = ['Ford', 'Austin']
print cars
other_cars = ['Lotus', 'Lancia']
cars.extend(other_cars)
print cars
Python_Array_9

Также легко удалить элементы Python ассоциативного массива, используя синтаксис remove:

cars = ['Ford', 'Austin', 'Lotus', 'Lancia']
print cars
cars.remove('Ford')
print cars
Python_Array_10

Вы узнали что-нибудь новое? Поделитесь с нами своими мыслями в комментариях!

Перевод статьи “How Arrays and Lists Work in Python” был подготовлен дружной командой проекта Сайтостроение от А до Я.

31 мая 2017 в 14:42
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок