Включение списков в 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, вы можете зарегистрироваться по моей реферальной ссылке. Обратите внимание, что я получу часть членского взноса.