Использование списковое включение в Python

Использование List Comprehensions в Python

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

Заключение

Мы рассмотрели варианты использования спискового включения и научились фильтровать данные в процессе генерации.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий