Списки
@ProgHelpBot- Объявление
- Обращение к элементам
- Добавление элемента
- Удаление элемента
- Проверка наличия элемента
- Объединение
- Разложение
- Сравнение
- Получение части
- Методы и функции
- Копирование
- Генератор списка
Объявление
Хранит набор или последовательность элементов.
Для создания применяются квадратные скобки [], внутри которых через запятую перечисляются элементы списка.
empty1 = [] # пустой empty2 = list() # пустой nums = [1, 2, 3, 4, 5] people = ["Alex", "Bill", "Carl"]
Для создания списка из другого набора элементов (строка, кортеж, множество) также используется функция-конструктор list().
letters = list("Hello") # ['H', 'e', 'l', 'l', 'o']
Для вывода элементов списка можно использовать функцию print().
nums = [1, 2, 3, 4, 5] print(nums) # [1, 2, 3, 4, 5]
Если необходимо создать список, в котором повторяется одно и то же значение несколько раз, то используется символ *.
people = ["Alex", "Bill"] * 3 print(people) # ['Alex', 'Bill', 'Alex', 'Bill', 'Alex', 'Bill']
Обращение к элементам
Для обращения к элементам списка используются индексы (начиная с 0), представляющие номер элемента в списке. Для обращения к элементам с конца используются отрицательные индексы (-1 - последний, -2 - предпоследний и т.д.).
people = ["Alex", "Bill", "Carl"] print(people[0]) # Alex print(people[1]) # Bill print(people[-1]) # Carl print(people[-2]) # Bill
Для изменения элемента списка достаточно присвоить ему новое значение.
people = ["Alex", "Bill", "Carl"] people[1] = "Walt" print(people) # ['Alex', 'Walt', 'Carl']
Добавление элемента
Для добавления элемента в конец списка используется метод append().
people = ["Alex", "Bill"]
people.append("Carl")
print(people) # ['Alex', 'Bill', 'Carl']
Для добавления элемента на определённую позицию используется метод insert(), где в качестве параметров, кроме самого элемента, передаётся нужная позиция.
people = ["Alex", "Carl"] people.insert(1, "Bill") print(people) # ['Alex', 'Bill', 'Carl']
Удаление элемента
remove
Для удаления конкретного элемента используется метод remove(). Если такой элемент отсутствует, будет вызвано исключение.
people = ["Alex", "Carl", "Bill"]
people.remove("Carl")
print(people) # ['Alex', 'Bill']
people.remove("Dave") # ValueError
pop
Удаляет i-ый элемент и возвращает его (по умолчанию i = -1).
people = ["Alex", "Carl", "Bill"] print(people.pop(1)) # Carl print(people) # ['Alex', 'Bill']
del
Для удаления части списка или всего списка также используется оператор del. В качестве параметра этому оператору передается удаляемый элемент или набор элементов.
people = ["Alex", "Bill", "Carl", "Dave", "Eddy"] del people[1] print(people) # ['Alex', 'Carl', 'Dave', 'Eddy'] del people[2:] print(people) # ['Alex', 'Carl']
Проверка наличия элемента
Для проверки наличия элемента используется оператор in.
people = ["Alex", "Bill", "Carl"]
print("Alex" in people) # True
Объединение
Для объединения списков применяется операция сложения.
people1 = ["Alex", "Bill", "Carl"] people2 = ["Dave", "Eddy", "Floy"] people3 = people1 + people2 print(people3) # ['Alex', 'Bill', 'Carl', 'Dave', 'Eddy', 'Floy']
Разложение
Можно разложить список на отдельные элементы. Число переменных в этом случае должно быть равно количеству элементов в списке.
people = ["Alex", "Bill", "Carl"] alex, bill, carl = people print(alex) # Alex print(bill) # Bill print(carl) # Carl
Сравнение
Два списка считаются равными, если они содержат один и тот же набор элементов.
nums1 = [1, 2, 3, 4, 5] nums2 = [1, 2, 3, 4, 5] print(nums1 == nums2) # True
Получение части
Для получения определённой части списка применяется специальный синтаксис:
list[:end]-endуказывает на индекс элемента, до которого нужно копировать список;list[start:]-startуказывает на индекс элемента, начиная с которого надо скопировать элементы;list[::step]-stepуказывает на шаг, через который будут копироваться элементы из списка (по умолчанию равен1).
people = ["Alex", "Bill", "Carl", "Dave", "Eddy"] print(people[:3]) # ['Alex', 'Bill', 'Carl'] print(people[3:]) # ['Dave', 'Eddy'] print(people[3:4]) # ['Dave'] print(people[::2]) # ['Alex', 'Carl', 'Eddy']
Методы и функции
Наиболее важные методы для работы со списками:
list.append(x)- добавляет элементxв конец списка;list.insert(i, x)- вставляет наi-ый элементx;list.extend(L)- расширяет список, добавляя в конец все элементы спискаL;list.remove(x)- удаляет первый элемент в списке, имеющий значениеx. Вызывает исключение, если такого элемента не существует;list.pop(i)- удаляетi-ый элемент и возвращает его (по умолчаниюi = -1);list.clear()- очищает список;list.index(x, start, end)- возвращает положение первого элемента со значениемx(при этом поиск ведется отstartдоend, если эти параметры заданы);list.count(x)- возвращает количество элементов со значениемx;list.copy()- возвращает копию списка;list.reverse- разворачивает список;list.sort(key=func)- сортирует список на основе функцииfunc(по умолчанию по возрастанию).
Наиболее важные функции для работы со списками:
len(list)- возвращает длину списка;min(list)- возвращает наименьший элемент списка;max(list)- возвращает наибольший элемент списка;sorted(list, key=func)- возвращает отсортированный список на основе функцииfunc(по умолчанию по возрастанию), не меняя исходного списка;sum(list)- возвращает сумму элементов списка (только если все элементы - числа).
Копирование
Списки представляют изменяемый (mutable) тип, поэтому если обе переменных будут указывать на один и тот же список, то изменение одной переменной, затронет и другую переменную. Это поверхностное копирование (shallow copy).
people1 = ["Alex", "Bill", "Carl"]
people2 = people1
people1.append("Dave")
print(people1) # ['Alex', 'Bill', 'Carl', 'Dave']
print(people2) # ['Alex', 'Bill', 'Carl', 'Dave']
Чтобы происходило копирование элементов, но при этом переменные указывали на разные списки, необходимо выполнить глубокое копирование (deep copy).
people1 = ["Alex", "Bill", "Carl"]
people2 = people1.copy()
people1.append("Dave")
print(people1) # ['Alex', 'Bill', 'Carl', 'Dave']
print(people2) # ['Alex', 'Bill', 'Carl']
Генератор списка
Генератором списка называется способ построения списка с применением выражения к каждому элементу, входящему в последовательность.
[список] = [[инструкция] for [переменные] in [набор значений]]
Пример:
a = [i * 2 for i in "Hello"] print(a) # ['HH', 'ee', 'll', 'll', 'oo'] b = [i for i in range(1, 11)] print(b) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]