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

Списки в Python — это структура данных для хранения множества элементов. В других языках такие структуры данных называют динамические массивы. Динамические — это значит, что длина не должны задаваться заранее и в такой массив всегда можно поместить данные.

Другой особенностью списков является, то что в них могут хранится данные разных типов. В том числе и списки.

Эти две особенности сильно отличают Python других языков программирования. Например в Pascal массив это конечная группа переменных одного типа:

Var
a:array[1..5] of integer;

Примеры использования списков в Python

Списки используются для хранения списка элементов любого типа с возможностью получить доступ по индексу к любому элементу.


# Список среднесуточной температуры в Уфе на этой неделе
temperature = [5, 9, 7, 0, -2, -10, 3]

# Список покупок
buy = ["хлеб", "молоко", "масло"]

# Список может состоять из списков 
a = [[1, 2, 9],
     [8, 7, 6],
     [5, 2, 3]]

# Список может состоять из элементов разных типов
# Это имеет смысл например когда в списке значений одной строки таблицы с данными
# Информация о товарах, ценах и остатках на складе
a = [["Пылесос", 15000, 9],
     ["Холодильник", 45000, 6],
     ["Кофеварка", 25000, 3]]

Способы создания списков в Python

Есть несколько способов создания списков


# Способ 1. В коде
a = [5, 9, 7]

# Способ 2. Добавлением элементов
a = []
a.append(5)
a.append(9)
a.append(7)

# Способ 3 через генератор списков
a = [5, 9, 7]
b = [i * 3 for i in a]
print(b)

# Способ 4 через функцию List() и итерируемый объект (строка, range, файлб спискиб кортежи)
a = list("ваппавпвап")
b = list(range(10))

Как можно работать со списками в Python?

Главная особенность списка — это, то что у каждого элемента есть свой индекс. Индексы начинаются с 0. Каждый элемент списка можно получить по его индексу. Так же можно перебрать все элементы списка в цикле — для этого хорошо подходит цикл for.


# Доступ к элементу списка по индексу
a = [12, 18, 3, 7, 56, 7, 11, 8]
b = a[2]

# Способы перебрать все элементы в списке

# Способ 1
for i in a:
    print(i)

# Способ 2
dl = len(a)
for i in range(dl):
    print(a[i])

# Способ 3
for i, j in enumerate(a):
    print("индекс:",i,"значение",j)

Есть возможность проверить принадлежит ли значение списку. Для этого нужно использовать конструкцию «in». Ее удобно использовать в условии if.


a = [1,12,7]
if 12 in a:
    print("принадлежит списку")
else:
    print("не принадлежит списку")

Способы изменения списков в Python

Списки — это динамические массивы. Это значит их можно изменять: можно добавлять элемент в конец списка или в любую произвольную позицию, можно удалять элементы из списка. Все способы изменения списков в примере:


# Методы изменения списка
a = ["красный", "желтый", "синий"]
a.append("зеленый") # добавить элемент в конец списка
a.insert(1, "оранжевый") # вставить элемент в нужную позицию в списке
a.remove("красный") # удалить по значению
a.pop(1) # удалить по индексу
a.sort() # отсортировать от меньшего к большему
a.sort(reverse = True) # отсортировать от большего к меньшему
a.reverse() # развернуть список

# сложение и умножение
a = [12, 18, 3]
b = [7, 11, 8]
c = a + b # в конец списка а добавить список б
c = a * 3 # в конец списка а добавить список a еще 2 раза

Способы получения данных из списков

Из списков можно извлекать данные. Самый распространенный способ — это получения элементы по индексу a[5]. Но есть и другие функции:


# Получение элементы по индексу
a = ["красный", "желтый", "синий"]
b = a[1]

# Функции для получения данных из списка
ind = a.index("синий")# индекс элемента со значением "синий"
kol = a.count("синий") #количество элементов со значением "синий"
b = a.copy() #новый список созданный копированием списка a
dlin = len(a) #длина списка

# срезы
a = [12, 18, 3, 7, 56, 7, 11, 8]
b = a[0:2:1] # будет создан срез с 0 индекса включительно по 2 индекс (не вкл) с шагом 2

Задачи для работы со списками в Python

Классические алгоритмы для работы со списками — это нахождение индекса элемента в списке и нахождение наибольшего и наименьшего элемента в списке.


# Найти позицию заданного элемента в списке
# Способ 1
dl = len(a)
for i in range(dl):
    if a[i] == 7:
        print(i)

# Способ 2
for i, j in enumerate(a):
    if j == num:
        print(i)

# Найти наименьший элемент в списке
m = a[0]
for i in a:
    if i < m:
        m = i
print("min = ", m)