Python Урок 05

## Список

**Список** — это контейнер хранящий объекты в определенном порядке. У каждого объекта в нашем списке, есть свой порядковый номер. Мы можем к этому объекту обратиться.

**Списки** — тип данных который позволяет хранить какие либо значение. В отличии от тех типов данных которых мы рассматривали (целые числа, вещественные числа, строки), список позволяет в себе хранить много значений сразу, независимо от того, какого они типа.
**Список** — это итерированный объект.

### Работа со списком

Пример списка:

```
number = [3, 5, 1, 12, 7, 9]
print(number)

 *# Пример работы с одним типом данных, а именно с целыми числами.*

```

```
number = [3, 5, 1, 12, 7, 9, "name"]
print(number)

 *# Пример работы с несколькими типами данных, а именно с целыми числами, вещественными числами и строками.*

```

```
number = [3, 5, 1, 12, 7, 9, "name", [4, 6, 2]]
print(number)

 *# Пример работы с несколькими типами данных и со списком внутри списка.*

```

### Как вывести элементы списка

Вариант 1 (длинный):

```
name1 = "Бонни"
name2 = "Стики"
name3 = "Барсик"
print(name1)
print(name2)
print(name3)

```

Вариант 2 (короткий и правильный):

```
names = ["Бонни", "Стики", "Барсик"]
print(names)

```

### Обращение к объекту списка по отдельности

Мы можем к каждому объекту списка обратиться по отдельности. У каждого объекта в списке есть порядковый номер начиная с нуля (0, Zero). Для того чтобы обратиться к отдельному элементу списка, мы должны написать: *print(переменная[индекс объекта])*.

```
names = ["Бонни", "Стики", "Барсик"] *# если объекты начинаться с нуля, то Бонни будет 0, а Барсик 2.*
print(names[1]) *# Здесь мы выведем объект 1, то есть Стики.*

```

Предположим у нас есть огромный список, и нам нужно вывести последний элемент нашего списка. Для того чтобы это сделать, нужно поставить обратный индекс (от -1 и до -Бесконечности).

```
names = ["Бонни", "Стики", "Барсик"] *# если объекты начинаться с -1, то Бонни будет -3, а Барсик -1.*
print(names[-2]) *# Здесь мы выведем объект -2, то есть Стики.*

```

Чтобы вывести все объекты по отдельности, нужно будет воспользоваться циклом:

```
names = ["Бонни", "Стики", "Барсик"]
for name in names:
    print(name)

```

## Методы

### Метод append

Если при работе со списком, мы хотим добавить еще объект, то мы воспользуемся методом append. Метод append — это функция для добавления объекта в конец списка.

```
names = ["Бонни", "Стики", "Барсик"]
names.append("Бонифаций")
print(names)

 *# Тем самым к стандартному списку, мы добавили дополнительный объект.*

```

### Метод pop

Если при работе со списком, мы хотим удалить последний объект, то мы воспользуемся методом pop. Метод pop — это функция для удаления объекта из конца списка.

```
names = ["Бонни", "Стики", "Барсик"]
names.pop()
print(names)

 *# Тем самым в стандартном списке, мы удалили последний объект.*

```

### Метод index

Если при работе со списком, мы хотим узнать порядковый номер(индекс) объекта, то мы воспользуемся методом index. Метод index — это функция для вывода порядкового номера объекта.

```
names = ["Бонни", "Стики", "Барсик"]
number = names.index("Стики")
print(number)

 *# Тем самым покажет порядковый номер Стики.*

```

### Функция len

Функция len позволяет измерить длину нашего списка:

```
names = ["Бонни", "Стики", "Барсик"]
print(len(names)) *# Покажет длину списка, которая равна трем объектам.*

```

## Методы сортировки

### Метод sort

Метод sort — сортирует от меньшого к большему.

```
number = [3, 5, 1, 12, 7, 9]
number.sort()
print(number)

```

### Параметр reverse

Метод sort с параметром reverse — сортирует от большего к меньшему.

```
number = [3, 5, 1, 12, 7, 9]
number.sort(reverse = True)
print(number)

```

### Вставить дополнительную переменную

Если вы захотите добавить вместо первого элемента(5), хотите поставить строковый элемент b. Мы напишем имя списка, элемент который хоти изменить number[1] = "b"

```
number = [3, 5, 1, 12, 7, 9]
number[1] = "b"
print(number)

 *# Тем самым он заменит 5 в списке, буквой(строкой) b.*

```

Если мы захотим отсортировать список, то программа не сможет этого сделать. Потому что список состоит не из переменных одного типа. Он не может отсортировать цифры и строки, но это не значит что он не сможет отсортировать строковые типы данных.

```
names = ["Бонни", "Стики", "Барсик"]
names.sort()
print(names)

 *# Сортировка работает с одним типом данных либо строками, либо с цифрами.*

```