Top.Mail.Ru

Списки

Еще один вид последовательности — это списки.
Список — это изменяемая, упорядоченная коллекция элементов в Python. Он может содержать элементы разных типов (числа, строки, другие списки и т. д.). В Python списки обозначаются квадратными скобками [].
Пример создания списка:
my_list = [1, 2, 3, "яблоко", True]
Здесь my_list — это список с числами, строкой и булевым значением.

В Python для списков поддерживается индексация по аналогии со строками. Напомним, что индексация начинается с 0. Тогда для нашего списка индексы будут следующие:
Индекс
0
1
2
3
4
Элемент
1
2
3
"яблоко"
True
print(my_list[2]) # Выведет: 3
Можно использовать отрицательные индексы — отсчёт ведётся с конца:
print(my_list[-1]) # Выведет: True (последний элемент)
Иногда нам хочется достать не отдельные символы, а сразу целые последовательности элементов. Для этого нужны срезы.

Срез позволяет получить часть списка.

Записывается срез так: list[начало:конец:шаг].

  • начало — индекс первого элемента, который взять (включительно).
  • конец — индекс элемента, на котором заканчиваем брать (не включительно).
  • шаг — через сколько брать элементы (по умолчанию 1, значит взять подряд все). Если шаг отрицательный — то элементы берутся с конца.

Если какой-то из параметров не указывать, Python возьмёт значения по умолчанию: начало — с 0, то есть с начала списка; конец — до конца списка; шаг — 1.

Примеры:

  • list[1:4] — взять с 2-го по 4-й элемент (индексы 1, 2, 3).
  • list[:3] — взять с начала до 3-го элемента (0,1,2).
  • list[:2] — взять каждый второй элемент всего списка.
  • list[:-1] — взять все элементы в обратном порядке.

Рассмотрим несколько примеров:
numbers = [10, 20, 30, 40, 50, 60]
numbers[1:4] — элементы с 1-го по 3-й (4 — не включительно):
print(numbers[1:4]) # [20, 30, 40]
numbers[:3] — три первых элемента:
print(numbers[:3]) # [10, 20, 30]
numbers[3:] — элементы с 4-го до конца:
print(numbers[3:]) # [40, 50, 60]
numbers[:-1] — разворачивает список:
print(numbers[::-1]) # [60, 50, 40, 30, 20, 10]
Отметим, что для строк можно также реализовывать срезы по такому же принципу.

Конечно, как и у строк, у списков есть методы. Приведем примеры некоторых из них:

1. append (): Добавить элемент в конец списка

Этот метод добавляет новый элемент в конец списка.
В примере ниже к списку с яблоком и бананом добавляем грушу — она становится последним элементом.
fruits = ['яблоко', 'банан']
fruits.append('груша')
print(fruits) # ['яблоко', 'банан', 'груша']
2. insert (): Вставить элемент на определённую позицию

Этот метод вставляет элемент в конкретное место списка, указанное индексом.
В примере ниже мы вставляем апельсин на позицию 1, то есть между первым (яблоко) и вторым (банан) элементом.
fruits.insert(1, 'апельсин') # Вставить между 'яблоко' и 'банан'
print(fruits) # ['яблоко', 'апельсин', 'банан', 'груша']
3. remove (): Удалить первый найденный элемент по значению

Этот метод ищет и удаляет первый элемент с указанным значением.
В примере ниже убираем банан из списка, и он больше не появляется.
fruits.remove('банан')
print(fruits) # ['яблоко', 'апельсин', 'груша']
4. sort(): Отсортировать список

Этот метод изменяет список, чтобы элементы были упорядочены по возрастанию.
numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers) # [1, 2, 3, 4]

Цикл For