В этой статье я разбираю списки в Python 3. Вы узнаете, какими свойствами обладают списки и как можно с ними работать.

Свойства, индексация и срезы списков

Я уже писал про последовательности и множества в Python 3. Список – это изменяемая последовательность объектов, причём в одном списке можно хранить объекты разных типов.

Списки в Python 3 записываются в квадратных скобках, например так:

my_list = [1, 2, 3, 4, 'пять']

В коде выше мы создали список [1, 2, 3, 4, ‘пять’] и связали его с переменной my_list. Как видите, наш список хранит и числа и строки. Но Python определяет тип объектов во время выполнения, а не при их объявлении в коде. Поэтому, если например, мы захотим из каждого элемента списка отнять 1, а там окажется строка, то ошибка появится во время выполнения, а не во время компиляции.

Список, так же как и строка индексирует свои элементы:

Индексация списка в Python 3
Индексация списка в Python 3

Индексация позволяет обращаться к объектам в списке по индексу (положительному или отрицательному), а также создавать срезы.

Получение некоторых свойств списка, обращение по индексам и создание срезов показана в этом примере:

### Код
my_list = [1, 2, 3, 4, 'пять']
print('Тип объекта - ', type(my_list))        # Тип объекта
print('Длина списка - ',len(my_list))         # Длина списка
print('Первый элемент списка - ', my_list[0]) # Обращение по индексу
print('Срез [1:4] - ', my_list[1:4])          # Срез от 2-ого элемента до 3-его
print('Срез [0:5:2] - ', my_list[0:5:2])      # Срез от 1-ого элемента до 5-ого, с шагом 2

### Исполнение
Тип объекта -  <class 'list'>
Длина списка -  5
Первый элемент списка -  1
Срез [1:4] -  [2, 3, 4]
Срез [0:5:2] -  [1, 3, 'пять']

Запомните, когда вы создаёте срез, то указываете от какого элемента (включительно) и до какого элемента (не включительно). Вы можете указать шаг среза, например каждый второй элемент, или каждый третий, и так далее.

Так как список – это изменяемый тип данных, то мы можем изменить объект, не создавая новый, например так:

### Код
my_list = [1, 2, 3, 4, 'пять']
print(my_list, ' id =', id(my_list))
my_list[4] = 5
print(my_list, ' id =', id(my_list))

### Исполнение
[1, 2, 3, 4, 'пять']  id = 1906747850496
[1, 2, 3, 4, 5]       id = 1906747850496

Из кода видно, что мы изменили список, при этом объект остался прежним.

Работа со списками в Python

Выше я уже показал, как можно изменить элемент списка, но повторюсь:

### Код
my_list = [1, 2, 3, 4, 'пять']
my_list[4] = 5
print(my_list)

### Исполнение
[1, 2, 3, 4, 5]

Мы можем добавить элемент в конец списка с помощью метода append. Или добавить элемент на определённую позицию с помощью метода insert (при этом элементы сдвигаются вправо):

### Код
my_list = [1, 2, 3, 4, 'пять']
my_list.append('шесть')
print(my_list)
my_list.insert(1, "два")
print(my_list)

### Исполнение
[1, 2, 3, 4, 'пять', 'шесть']
[1, 'два', 2, 3, 4, 'пять', 'шесть']

Можно расширить список другим списком с помощью метода extend:

### Код
my_list1 = [1, 2, 3]
my_list2 = [4, 5, 6]
my_list1.extend(my_list2)
print(my_list1)

### Исполнение
[1, 2, 3, 4, 5, 6]

Удалить элемент списка можно по значению элемента с помощью метода remove. Или по его индексу с помощью метода pop. Также можно очистить массив полностью с помощью метода clear:

### Код
my_list = [1, 2, 3, 4, 5, 6]
my_list.remove(6)
my_list.pop(0)
print(my_list)
my_list.clear()
print(my_list)

### Исполнение
[2, 3, 4, 5]
[]

Сортировка списка (работает только с однотипными данными) с помощью метода sort:

### Код
my_list = [1, 3, 2, 5, 4, 6]
my_list.sort()
print(my_list)

### Исполнение
[1, 2, 3, 4, 5, 6]

Посчитать сколько раз элемент встречается в списке можно с помощью count:

### Код
my_list = [1, 3, 2, 5, 4, 6, 2, 1, 2, 1, 7,1]
print(my_list.count(2))

### Исполнение
3

Так как список относится к изменяемым типам данным, то при присваивании существующего списка новой переменной, копирования не происходит. Новая переменная просто ссылается на старый список. Может случиться такая ситуация, мы думаем что изменяем новый список, а на самом деле изменяем и старый список тоже (потому что это один и тот же список):

### Код
my_list_1 = [1, 3, 5, 7]
my_list_2 = my_list_1
my_list_2.append(9)
print(my_list_1)

### Исполнение
[1, 3, 5, 7, 9]

Поэтому список можно копировать с помощью метода copy:

### Код
my_list_1 = [1, 3, 5, 7]
my_list_2 = my_list_1.copy()
my_list_2.append(9)
print(my_list_1)
print(my_list_2)

### Исполнение
[1, 3, 5, 7]
[1, 3, 5, 7, 9]

Проверить, содержится ли элемент в списке можно так:

### Код
my_list = [1, 3, 5, 7]
print (1 in my_list)  
print (2 in my_list)

### Исполнение
True
False

Итог

Python 3 содержит очень много методов работы со списками, изучить их все вы можете в официальной документации. В этой статье я разобрал лишь некоторую часть из них.

Сводка
Python 3. Списки
Имя статьи
Python 3. Списки
Описание
В этой статье я разбираю списки в Python 3. Вы узнаете, какими свойствами обладают списки и как можно с ними работать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *