Списки
В предыдущих уроках мы работали с последовательностями чисел, символов, строк, но не сохраняли всю последовательность в памяти компьютера, а обрабатывали ее поэлементно, считывая раз за разом новый элемент. Однако во многих задачах требуется сохранять всю последовательность. Например, классическая задача сортировки (упорядочения) некоторой последовательности требует сохранения всех данных в памяти компьютера. Увы, не сохранив, их невозможно отсортировать. И тут на помощь приходит структура данных, которая в большинстве языков программирования называется массивом. В Python она называется списком.
Структура данных (data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных.
Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке.
Создание списка
Чтобы создать список, нужно перечислить его элементы через запятую в квадратных скобках:
numbers = [2, 4, 6, 8, 10]
languages = ['Python', 'C#', 'C++', 'Java']
Список numbers
состоит из 5 элементов, и каждый из них — целое число.
numbers[0] == 2;
numbers[1] == 4;
numbers[2] == 6;
numbers[3] == 8;
numbers[4] == 10.
Список languages
состоит из 4 элементов, каждый из которых — строка.
languages[0] == 'Python';
languages[1] == 'C#';
languages[2] == 'C++';
languages[3] == 'Java'.
Значения, заключенные в квадратные скобки и отделенные запятыми, называются элементами списка.
Список может содержать значения разных типов данных:
info = ['Timur', 1992, 61.5]
Список info
содержит строковое значение, целое число и число с плавающей точкой.
info[0] == 'Timur';
info[1] == 1992;
info[2] == 61.5.
Обычно элементы списка содержат данные одного типа, и на практике редко приходится создавать списки, содержащие элементы разных типов данных.
Пустой список
Создать пустой список можно двумя способами:
- Использовать пустые квадратные скобки
[]
;
- Использовать встроенную функцию, которая называется
list
.
Следующие две строки кода создают пустой список:
mylist = []
mylist = list()
Вывод списка
Для вывода всего списка можно применить функцию print()
:
numbers = [2, 4, 6, 8, 10]
languages = ['Python', 'C#', 'C++', 'Java']
print(numbers)
print(languages)
Функция print()
выводит на экран элементы списка, в квадратных скобках, разделенные запятыми:
[2, 4, 6, 8, 10]
['Python', 'C#', 'C++', 'Java']
Обратите внимание, что вывод списка содержит квадратные скобки. Позже мы научимся выводить элементы списка в более удобном виде с помощью циклов или с помощью распаковки.
Встроенная функция list
Python имеет встроенную функцию list()
, которая помимо создания пустого списка может преобразовывать некоторые типы объектов в списки.
Например, мы знаем, что функция range()
создает последовательность целых чисел в заданном диапазоне. Для преобразования этой последовательности в список, мы пишем следующий код:
numbers = list(range(5))
Во время исполнения этого кода происходит следующее:
- Вызывается функция
range()
, в которую в качестве аргумента передается число 5;
- Эта функция возвращает последовательность чисел
0, 1, 2, 3, 4
;
- Последовательность чисел
0, 1, 2, 3, 4
передается в качестве аргумента в функцию list()
;
- Функция
list()
возвращает список [0, 1, 2, 3, 4]
;
- Список
[0, 1, 2, 3, 4]
присваивается переменной numbers
.
Вот еще один пример:
even_numbers = list(range(0, 10, 2))
odd_numbers = list(range(1, 10, 2))
Точно так же с помощью функции list()
мы можем создать список из символов строки. Для преобразования строки в список мы пишем следующий код:
s = 'abcde'
chars = list(s)
Во время исполнения этого кода происходит следующее:
- Вызывается функция
list()
, в которую в качестве аргумента передается строка 'abcde'
;
- Функция
list()
возвращает список ['a', 'b', 'c', 'd', 'e']
;
- Список
['a', 'b', 'c', 'd', 'e']
присваивается переменной chars
.
Примечания
Примечание 1. Как уже было сказано, списки в Python аналогичны массивам в других языках программирования. Однако разница между списками и массивами все же существует. Элементы массива всегда имеют одинаковый тип данных и располагаются в памяти компьютера непрерывным блоком, а элементы списка могут быть разбросаны по памяти как угодно и могут иметь разный тип данных.
Примечание 2. Обратите внимание, при выводе содержимого списка с помощью функции print()
, все строковые элементы списка обрамляются одинарными кавычками. Если требуется осуществить вывод в двойных кавычках, нужно самостоятельно писать код вывода.