Списки

Списки

@ProgHelpBot
  1. Объявление
  2. Обращение к элементам
  3. Добавление элемента
  4. Удаление элемента
  5. Проверка наличия элемента
  6. Объединение
  7. Разложение
  8. Сравнение
  9. Получение части
  10. Методы и функции
  11. Копирование
  12. Генератор списка

Объявление

Хранит набор или последовательность элементов.

Для создания применяются квадратные скобки [], внутри которых через запятую перечисляются элементы списка.

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]


← Генерация исключений и создание своих типов исключений

→ Кортежи

Report Page