Списки (list) используются для хранения элементов.
Список создается с помощью квадратных скобок и запятых, разделяющих элементы.

words = [“Hello”, “world”, “!”]

В этом примере список words содержит в себе три элемента типа string.

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

words = [“Hello”, “world”, “!”]
print(words[0])
print(words[1])
print(words[2])

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

Чтобы создать пустой список, используйте пустые квадратные скобки.

empty_list = []
print(empty_list)

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

number = 3
things = [“string”, 0, [1, 2, number], 4.56]
print(things[1])
print(things[2])
print(things[2][2])

Вложеннные списки могут представлять двумерную матрицу:

m = [
[1, 2, 3],
[4, 5, 6]
]

print(m[1][2])

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

Некоторые типы данных, такие как строки, могут быть проиндексированы, как списки.
При индексации строк, каждый символ в строке будет проиндексирован, как отдельный элемент списка.

str = “Hello world!”
print(str[6])

Пробел (” “) тоже символ и имеет индекс.

Элемент любого индекса в списке можно переназначить.

nums = [7, 7, 7, 7, 7]
nums[2]= 5
print(nums)

Как и над строками, над списками можно проводить операции сложения и умножения.

nums = [1, 2, 3]
print(nums + [4, 5, 6])
print(nums * 3)

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

Когда нужно проверить наличие в списке какого-либо элемента, используется оператор in. Ему присваивается значение True (истина), если был найден один символ (или более одного) и False (ложь), если ни одного.

words = [“spam”, “egg”, “spam”, “sausage”]
print(“spam” in words)
print(“egg” in words)
print(“tomato” in words)

Оператор in также позволяет определить, является ли строка подстрокой другой строки.

Чтобы проверить действительно ли элемент не находится в списке, используется оператор not одним из следующих способов:

nums = [1, 2, 3]
print(not 4 in nums)
print(4 not in nums)
print(not 3 in nums)
print(3 not in nums)

Еще одна операция со списками – метод append. Предназначен для добавления элемента в конец списка.

nums = [1, 2, 3]
nums.append(4)
print(nums)

Перед append ставится точка, потому что это метод класса из списка. Методы будут рассматриваться немного позже.

Чтобы подсчитать количество элементов в списке, используйте функцию len.

nums = [1, 3, 5, 2, 4]
print(len(nums))

В отличие от индексов элемента, функция len не начинает считать с 0. Так что, в примере сверху, когда список имеет 5 элементов, len вернет значение 5.

Метод insert похож на append с той разницей, что он позволяет вставить новый элемент на любую позицию в списке, а не только в конец

words = [“Python”, “fun”]
index = 1
words.insert(index, “is”)
print(words)

С помощью метода index можно найти первое упоминание элемента в списке и вывести его индекс.
Если элемент не найден, выводится ошибка ValueError.

letters = [‘p’, ‘q’, ‘r’, ‘s’, ‘p’, ‘u’]
print(letters.index(‘r’))
print(letters.index(‘p’))
print(letters.index(‘z’))

Есть еще несколько полезных функций и методов для работы со списками.
max(list): возвращает элемент списка с наибольшим значением
min(list): возвращает элемент списка с наименьшим значением
list.count(obj): возвращает количество упоминаний элемента в списке
list.remove(obj): удаляет объект из списка
list.reverse(): располагает элементы в обратном порядке.