02 Май 2022
6 мин
17099

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

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

Содержание

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

При объявлении переменной под объект выделяется оперативная память. Например, для строки в четыре символа — восемь байт. Каждый символ занимает адрес в оперативной памяти, а строка представляет собой массив этих адресов. В C-подобных языках массивы создаются определенного размера, под тип объектов. В Python же нет ограничений ни по типу элементов множества, ни по его размерности. То есть список в Python — это динамическая коллекция указателей.

Как решать типовые задачи

🚀 Объявить список

Синтаксическая конструкция для создания списка Python:

mylst = [1, 2, 3, 4, 5]

Mylst — название переменной. В скобках указали элементы.

В Python есть ключевое слово list(). Это функция, которая либо создает пустой список, либо приводит к списку итерируемый объект. Чтобы создать пустой объект списка с помощью функции, напишите:

mylst = list()

🚀 Обратиться к элементу

Списки — это множества элементов. Чтобы обратиться к ним, указывают индекс — порядковый номер. В отличие, например, от словаря, который позволяет получать значение по ключу. Индекс первого элемента — 0, второго — 1, третьего — 2.

Так обратитесь к пятому элементу списка:

mylst = [1, 2, 3, 4, 5]
print(mylst[4])
5

🚀 Добавить элемент

Сделайте это с помощью встроенной функции append():

mylst = [1, 2, 3, 4, 5]
mylst.append(6)
print(mylst)
[1, 2, 3, 4, 5, 6]

Либо с помощью метода insert(), который принимает два аргумента — индекс и значение:

mylst = [1, 2, 3, 4, 5]
mylst.insert(1, 25)

print(mylst)
[1, 25, 2, 3, 4, 5]

❗ Если добавить элемент с помощью этого метода, произойдет смещение, а не его замена.

🚀 Изменить элемент

Для этого установите новое значение по его индексу:

mylst = [1, 2, 3, 4, 5]
mylst[1] = None
print(mylst)
[1, None, 3, 4, 5]

В Python необязательно, чтобы элементы коллекции были одного типа.

🚀 Удалить элемент

Для этого воспользуйтесь встроенной функцией del():

mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
del mylst[2]
print(mylst)
[1, 2, 4, 5, 4, 3, 2, 1]

Либо примените метод удаления remove():

mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
mylst.remove(2)

print(mylst)
[1, 3, 4, 5, 4, 3, 2, 1]

🚀 Проверить на вхождение

Чтобы проверить, есть ли указанный элемент в списке, воспользуйтесь ключевым словом in:

mylst = [1, 2, 3, 4, 5]
print(None in mylst)
False

print(3 in mylst)
True

🚀 Объединить списки

Вызовите метод extend():

mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]

mylst.extend(mylst1)
print(mylst)
[1, 2, 3, 4]

mylst.extend(mylst2)
print(mylst)
[1, 2, 3, 4, 5]

Или оператор сложения с присваиванием:

mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]

mylst += mylst1
print(mylst)
[1, 2, 3, 4]

mylst += mylst2
print(mylst)
[1, 2, 3, 4, 5]

🚀 Копировать список

Воспользуйтесь методом списков copy():

mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst.copy()

print(mylst)
[1, 2, 3, 4, 5]

print(mylst_copy)
[1, 2, 3, 4, 5]

Либо создайте полный срез:

mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst[::]

print(mylst)
[1, 2, 3, 4, 5]

print(mylst_copy)
[1, 2, 3, 4, 5]

🚀 Выполнить итерацию по списку

Воспользуйтесь конструкцией for:

mylst = [1, 2, 3, 4, 5]

for item in mylst:
    print(item)

1
2
3
4
5

Итерацию еще выполняют с помощью цикла while:

mylst = [1, 2, 3, 4, 5]
i = 0

while True:
    try:
        print(mylst[i])
    except IndexError:
        print("Done!")
        break
    i += 1

1
2
3
4
5
Done!

«Если вы думаете, что хорошо разбираетесь в списках, подумайте еще раз. Дело в том, что списки в Python больше похожи на то, что мы привыкли называть массивами в других языках программирования, а не на связанные списки, которые обычно приходят на ум при слове „список“».

Пол Бэрри
«Изучаем программирование на Python»

По-настоящему хорошо изучить язык можно на курсе Skypro «Python-разработчик». Программа выстроена от простого к сложному: сначала необходимый минимум теории, а потом много практики, чтобы усвоить знания и отработать навыки. Всё это — с поддержкой опытных наставников и кураторов.

Методы списков

✔️ index

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

mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]

print(mylst.index(3))
2

✔️ count

Позволяет получить количество элементов списка:

mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]

count_for_one = mylst.count(1)
print(count_for_one)
2

count_for_five = mylst.count(5)
print(count_for_five)
1

✔️ clear

Полностью очищает список:

mylst = [1, 2, 3, 4, 5]
mylst.clear()

print(mylst)
[]

✔️ sort

Сортирует список по указанному ключу. Принимает два необязательных аргумента: key — ключ, по которому производят сортировку, булевый флаг reverse — сортирует объекты в обратном порядке. По умолчанию в качестве ключа используют значение переменной:

mylst = [1, 3, 2, 4, 5]
mylst.sort() # reverse=False

print(mylst)
[1, 2, 3, 4, 5]

✔️ reverse

Инвертирует последовательность элементов:

mylst = [1, 2, 3, 4, 5]
mylst.reverse()

print(mylst)
[5, 4, 3, 2, 1]

✔️ pop

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

mylst = [1, 2, 3, 4, 5]

x = mylst.pop()
print(x)
5

print(mylst)
[1, 2, 3, 4]

y = mylst.pop(2)
print(y)
3

print(mylst)
[1, 2, 4]

Встроенные функции

✅ Получение длины любой коллекции

Используйте функцию len():

mylst = [1, 2, 3, 4, 5]

list_length = len(mylst)
print(list_length)
5

✅ Возврат элемента с максимальным значением

Используйте функцию max():

mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]

max_value = max(mylst)
print(max_value)
5

Возврат элемента с минимальным значением

Используйте функцию min():

mylst = [1, 2, 3, 4, 5]

min_value = min(mylst)
print(min_value)
1

Приведение к типу

Из любого итерируемого объекта можно получить список. Для этого передайте итерируемый объект функции list(). Этим объектом может быть строка, множество, кортеж или генератор:

myset = {1, 2, 3, 4}
mytuple = (5, 6)
mystring = "Test string"

lst1 = list(myset)
lst2 = list(mytuple)
lst3 = list(mystring)

print(lst1)
[1, 2, 3, 4]

print(lst2)
[5, 6]

print(lst3)
['T', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g']

Работа со срезами

Срезы позволяют создавать новые списки на основе существующего. Можно получить полную копию списка или некоторые элементы. Для этого используют шаг или указывают начальный и крайний индексы:

mylst = [1, 2, 3, 4, 5]

mylst_slice_0 = mylst[::] # полная копия
print(mylst_slice_0)
[1, 2, 3, 4, 5]

mylst_slice_1 = mylst[0:2] # крайний индекс (не включается в срез)
print(mylst_slice_1)
[1, 2]

mylst_slice_2 = mylst[::2] # указание шага
print(mylst_slice_2)
[1, 3, 5]

Синтаксис работы со срезами:

# имя переменной[стартовый индекс:конечный индекс:шаг]
variable_name[start_index:end_index:step]

Срезы часто используют в своей работе аналитики данных. Это позволяет им автоматизировать и ускорить решение некоторых задач. Основы Python для анализа данных можно освоить на курсе Skypro «Аналитик данных».

Генератор списков

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

mylst = [_ for _ in range(6)]

print(mylst)
[0, 1, 2, 3, 4, 5]

Вы можете указать условия для генерации элементов:

mylst = [x if x % 2 == 0 else "odd" for x in range(20)]

print(mylst)
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10, 'odd', 12, 'odd', 14, 'odd', 16, 'odd', 18, 'odd']

Главное о списках в Python

  • Списки — это коллекции указателей на элементы. В Python необязательно, чтобы все элементы списка были одного типа.
  • Список создают с помощью функции list(), генератора списков или срезов.
  • Решать типовые задачи позволяют методы списков: insert() — добавить элементы, remove() — удалить, extend() — объединить, copy() — копировать. А еще index(), sort() и другие.
  • В Python есть встроенные функции, чтобы работать с объектами. Например, del(), list(), len(), max(), min().

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Вас ждут 400 часов теории и практики, живые вебинары для разбора домашек. Сделаете четыре проекта для портфолио, получите диплом о переподготовке и помощь в поиске работы: создадите цепляющее резюме и подготовитесь к собеседованиям.

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