Полное руководство по использованию спискового включения в языке программирования 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"]Заключение
Мы рассмотрели варианты использования спискового включения и научились фильтровать данные в процессе генерации.





![[Решение] Как избежать ошибки UnboundLocalError](https://egorovegor.ru/wp-content/uploads/5b77c575d7-335x220.webp)



