Включение списков в Python обеспечивает более краткий способ создания списка значений.

Давайте сначала рассмотрим более подробный способ создания списка новых элементов. В приведенном ниже коде мы перебираем диапазон чисел от трех до девяти и создаем новый список cubed_values, содержащий каждое число в кубе.

cubed_values = []
for num in range(3, 10):
    cube = num**3
    cubed_values.append(cube)
print(cubed_values)
# [27, 64, 125, 216, 343, 512, 729]

В приведенном выше коде нет ничего плохого. Это довольно просто и легко читается.

Однако списковые включения предлагают нам альтернативный способ достижения того же результата. Вместо этого мы можем сжать нашу логику в одну строку между квадратными скобками, которая будет содержать новый список. Вот пример понимания списка, который дает тот же результат, что и наш первый пример.

cubed_values = [num**3 for num in range(3, 10)]
print(cubed_values)
# [27, 64, 125, 216, 343, 512, 729]

Включение списков обеспечивает более короткий синтаксис, в котором мы объединяем наш цикл for и логику, необходимую для создания каждого нового элемента. В качестве бонуса мы также можем полностью исключить вызов метода append(). Python позаботится об автоматическом добавлении нового элемента в список.

Использование списков не ограничивается списками чисел. На самом деле мы можем использовать списковые включения с любым итерируемым объектом. Есть много ситуаций, в которых вы могли бы использовать цикл for и счесть понимание списка полезным. Ниже приведен произвольный пример, который включает итерацию по строке.

doubled_char_string = ''.join([char * 2 for char in "hello"])
print(doubled_char_string)
# hheelllloo

Мы даже можем добавить условие if к нашим спискам. Ниже мы создаем новый список (а затем join() в строку), который содержит только согласные из нашей исходной строки, «согласные».

str = ''.join([x for x in "consonants" if x not in 'aeiou'])
print(str)
# cnsnnts

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

divisible_by_three = [num for num in range(1, 31) if num % 3 == 0]
print(divisible_by_three)
# [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Включение списков — это интересный способ сделать ваш код кратким, но убедитесь, что удобочитаемость вашего кода находится в центре вашего внимания. Если вы сомневаетесь, отдайте предпочтение ясности, а не краткости.

Хотите стать участником Medium?

Если вы хотите узнать больше здесь, на Medium, вы можете зарегистрироваться по моей реферальной ссылке. Обратите внимание, что я получу часть членского взноса.