Полное руководство по использованию спискового включения в языке программирования Python.
Введение
Списковое включение это более продвинутый и эффективный способ генерации списков в Python. Списковое включение обеспечивает лаконичный способ создания списка, используя цикл for.
Списковое включение так же называют list comprehensions
В основном проблемы, которые решаются с помощью списковое включение также могут быть реализованы с помощью цикла for, но со списковым включением количество кода сокращается и он становится эффективнее.
Создание списка с помощью цикла for
phone = "iphone" phone_char_list = [] for char in phone: phone_char_list.append(char) print(phone_char_list) ['i', 'p', 'h', 'o', 'n', 'e']
Здесь цикл for проводит итерации над символами в слове «iphone» и добавляет их к новому списку. Но это слишком много кода для такой простой задачи, мы можем сделать это проще и лаконичнее с помощью спискового включения.
Создание списка с помощью list comprehensions
phone = "iphone" phone_char_list = [char for char in phone] print(phone_char_list) ['i', 'p', 'h', 'o', 'n', 'e']
Как вы уже заметили, списковое включение создает список легче и лаконичнее, чем создание с помощью цикла for.
Дополнительные примеры
Допустим, у вас есть список телефонов, и вы хотите создать новый список, содержащий только те телефоны, которые имеют в названии букву «e».
Используя цикл for
phone_list = ["apple", "samsung", "sony", "nokia", "lg", "huawei"] new_phone_list = [] for phone in phone_list: if "e" in phone: new_phone_list.append(phone) print(new_phone_list) ["apple", "huawei"]
Этот пример так же может быть реализован с использованием списковым включением.
Фильтрация в списковом включение
Фильтры в списковом включение — это всего лишь условия (if else elif).
Вышеописанный процесс создания нового списка с телефонами, имеющими букву ‘e’, можно упростить таким образом:
phone_list = ["apple", "samsung", "sony", "nokia", "lg", "huawei"] new_phone_list = [phone for phone in phone_list if "e" in phone] print(new_phone_list) ["apple", "huawei"]
Если вам нужен список названий моделей телефонов длиннее 5 символов:
phone_list = ["apple", "samsung", "sony", "nokia", "lg", "huawei"] new_phone_list = [phone for phone in phone_list if len(phone) > 5] print(new_phone_list) ["apple", "huawei"]
Если вы хотите новый список, содержащий модели телефонов в верхнем регистре:
phone_list = ["apple", "samsung", "sony", "nokia", "lg", "huawei"] new_phone_list = [phone.upper() for phone in phone_list] print(new_phone_list) ["APPLE", "SAMSUNG", "SONY", "NOKIA", "LG", "HUAWEI"]
Функции в списковом включение
С помощью спискового включения можно сформировать список из значений, возвращаемых функцией. Давайте посмотрим на функцию, которая принимает модель телефона и возвращает его в верхнем регистре с смайлом:
def parse(phone): phone_parse = ":D " + phone.upper() return phone_parse phone_list = ["apple", "samsung", "sony", "nokia", "lg", "huawei"] phone_parse_list = [parse(phone) for phone in phone_list] print(phone_parse_list) [":D APPLE", ":D SAMSUNG", ":D SONY", ":D NOKIA", ":D LG", ":D HUAWEI"]
Заключение
Мы рассмотрели варианты использования спискового включения и научились фильтровать данные в процессе генерации.