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

List Comprehensions это более продвинутый и эффективный способ генерации списков в Python. List Comprehensions обеспечивает лаконичный способ создания списка, используя цикл for.

В основном проблемы, которые решаются с помощью list comprehensions также могут быть реализованы с помощью цикла for, но с list comprehensions количество кода сокращается и он становится эффективнее.

Создание списка с помощью цикла for

phone = "iphone" 
phone_char_list = [] 
for char in phone_char_list:
     phone_char_list.append(char)

print(phone_char_list)             
['i', 'p', 'h', 'o', 'n', 'e']

Здесь цикл for проводит итерации над символами в слове «iphone» и добавляет их к новому списку. Но это слишком много кода для такой простой задачи, мы можем сделать это проще и лаконичнее с помощью list comprehensions.

Создание списка с помощью list comprehensions

phone = "iphone" 
phone_char_list = [char for char in phone]

print(phone_char_list)             
['i', 'p', 'h', 'o', 'n', 'e']

Как вы уже заметили, list comprehensions создает список легче и лаконичнее, чем создание с помощью цикла 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"]

Этот пример так же может быть реализован с использованием list comprehensions.

Фильтрация в list comprehensions

Фильтры в list comprehensions — это всего лишь условия (if else elif) в list comprehensions.

Вышеописанный процесс создания нового списка с телефонами, имеющими букву ‘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"]

Функции в list comprehensions

С помощью list comprehensions можно сформировать список из значений, возвращаемых функцией. Давайте посмотрим на функцию, которая принимает модель телефона и возвращает его в верхнем регистре с смайлом:

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"]
close

Изучаешь Python?

Оформи подписку и получи моментальный доступ к новым публикациям

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

Поделиться записью в социальных сетях

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

Ваш адрес email не будет опубликован