Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
02 Апр 2023
8 мин
25084

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

Пройдите тест, узнайте какой профессии подходите

Список — это упорядоченный набор значений с элементами разного типа.

Список — это упорядоченный набор значений с элементами разного типа.

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

В статье рассмотрим, как создать, изменить и получить доступ к элементам.

Что такое список (list) в Python

Список в Python — универсальный организованный набор данных, в котором хранятся объекты разных типов. Например, числа, строки, другие списки и даже объекты. У каждого элемента есть свой уникальный номер, или индекс, по которому его легко можно найти. Нумерация элементов начинается с 0, а не с 1. А еще, в отличие от массивов, где всё должно быть одного размера, в Python ограничений по размеру нет.
элементы списка

Как списки хранятся в памяти

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

data = [10, "привет", [1, 2, 3]]

Как это выглядит:

  • data[0] — ссылка на число 10;
  • data[1] — ссылка на строку «привет»;
  • data[2] — ссылка на другой список [1, 2, 3].

Все элементы в списке расположены в том порядке, в котором их добавляли.

А если нужно что-то изменить или добавить в список, просто поменяйте указатели или добавьте новый. Необязательно выделять новую память для всех элементов.

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

Вот некоторые базовые функции списка 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
    Можно использовать отрицательные индексы, чтобы считать с конца:
    mylst = [1, 2, 3, 4, 5]
    print(mylst[-3])
  • Добавить элемент.
    Со встроенной функцией 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-разработчик» в Skypro. Начнете с основ, а потом перейдете к практике. Научитесь работать с переменными, циклами, функциями, условными конструкциями и основными типами данных. А еще — делать HTTP-запросы, работать с API и внешними сервисами, разрабатывать веб-приложения с Django и DRF, понимать и использовать принципы ООП: инкапсуляцию, наследование, полиморфизм. Не страшно, если у вас нет опыта в IT. Вам будет помогать команда опытных преподавателей, наставников и кураторов.

Методы списка python

Эти методы помогают находить, считывать и модифицировать данные, которые хранятся в списках:

  • index()

    Ищет заданное значение в списке слева направо. Возвращает индекс первого найденного элемента в списке. Если не нашел данные — выдает ошибку: ValueError.
    Пример:
    fruits = ["яблоко", "банан", "груша", "банан"]
    print(fruits.index("банан")) # 1
    Метод вернет индекс первого «банана» — то есть 1.
    Если элемента нет, будет ошибка.

  • count()

    Проходит по всему списку и подсчитывает, сколько раз встречается такое значение. Возвращает число.

    Пример:

    fruits = ["яблоко", "банан", "груша", "банан"]
    print(fruits.count("банан")) # 2
    «Банан» встречается два раза — метод возвращает 2.

  • clear()

    Полностью удаляет все элементы из списка, делает его пустым.

    Пример:

    fruits = ["яблоко", "банан", "груша"]
    fruits.clear()
    print(fruits) # []
    После clear() список пустой: [].

  • sort()

    Меняет порядок элементов в списке, сортирует по возрастанию. Числа — от меньшего к большему. Строки — по алфавиту. Меняет сам список, не создает копию. Возвращает None.

    Пример числа:
    numbers = [5, 1, 3, 2]
    numbers.sort()
    print(numbers) # [1, 2, 3, 5]
    Пример строки:
    fruits = ["груша", "яблоко", "банан"]
    fruits.sort()
    print(fruits) # ['банан', 'груша', 'яблоко']
    Сортирует внутри списка, возвращает None. Если нужно сохранить исходный список, лучше использовать sorted(). Но это уже отдельная функция, не метод.

  • reverse()

    Меняет порядок всех элементов в списке на обратный. Например: есть список, который идет от старых событий к новым, а нужно показать наоборот.

    Пример:
    numbers = [1, 2, 3, 4]
    numbers.reverse()
    print(numbers) # [4, 3, 2, 1]
    Элементы просто меняются местами, последний становится первым.

  • pop()

    Удаляет и возвращает элемент из списка по индексу. Если индекса нет, удаляется последний элемент.
    Пример без индекса:
    fruits = ["яблоко", "банан", "груша"]
    last = fruits.pop()
    print(last) # "груша"
    print(fruits) # ["яблоко", "банан"]
    Пример с индексом:
    fruits = ["яблоко", "банан", "груша"]
    last = fruits.pop(0)
    print(last) # "яблоко"
    print(fruits) # ["банан", "банан"]
    Метод pop() не просто удаляет, но и возвращает значение, которое можно сохранить.
    Если забыли, что делает метод, напишите help(list.method) прямо в Python. Или используйте автоподсказку в редакторе кода.

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

Вот основные функции, которые помогут работать со списками и выполнять разные операции:

  • Получить длину любого списка.
    Функция len() считает количество элементов в списке и возвращает это число. Можно легко узнать длину списка — например, сколько фруктов, имен или чисел в списке. Функция len() работает со списками, строками, словарями и кортежами.
    Пример:
    fruits = ["яблоко", "банан", "груша"]
    print(len(fruits)) # 3
  • Вернуть элемент с максимальным значением.
    Функция max() ищет и возвращает самое большое значение в списке. Например, в списке чисел вернет наибольшее число, а в списке строк — слово, которое идет последним по алфавиту.
    Пример с числом:
    numbers = [3, 8, 1, 5]
    print(max(numbers)) # 8
    Пример со строкой:
    names = ["Катя", "Аня", "Вика"]
    print(max(names)) # "Катя" (по алфавиту)
    Все элементы должны быть сравнимы между собой. Нельзя мешать строки и числа.
  • Вернуть элемент с минимальным значением.
  • Функция min() ищет и возвращает самое маленькое значение в списке. В числах — наименьшее число. В строках — слово, которое идет первым по алфавиту.
    Пример с числом:
    numbers = [3, 8, 1, 5]
    print(min(numbers)) # 1
    Пример со строкой:

    names = ["Катя", "Аня", "Вика"]
    print(max(names)) # "Аня"
  • Привести к типу.
    Функция list() преобразует другие типы данных в список. Например: строку, кортеж, множество.
    Пример из строки:
    text = "hello"
    letters = list(text)
    print(letters) # ['h', 'e', 'l', 'l', 'o']
    Пример из кортежа:
    numbers = (1, 2, 3)
    print(list(numbers)) # [1, 2, 3]
    Пример из множества:

    items = {"яблоко", "банан", "груша"}
    print(list(items)) # ['банан', 'груша', 'яблоко'] (порядок может быть разным)
    После преобразования получается настоящий список, с которым можно делать всё что угодно.

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

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

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]

Срезы часто используют аналитики данных. Это автоматизирует и ускоряет решение некоторых задач. Получить нужные навыки можно в онлайн-университете Skypro на курсе «Аналитик данных». За 12 месяцев изучите базу, которая пригодится в будущей профессии. Опытные преподаватели объяснят всё простыми словами, и у вас будет возможность сразу начать практиковаться на проектах от реальных работодателей. Занятия проходят онлайн — удобно совмещать с работой и личной жизнью. В общем чате сможете задать вопросы своим сокурсникам, кураторам или преподавателям.

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

С этой конструкцией можно легко создавать списки:

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

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

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