Вы можете подумать, что Понимание списков — это продвинутая концепция. Однако в сложных ситуациях он может упростить ваш код всего за одну строку. Пришло время понять, как это работает. Я объясню это для начинающих с помощью примеров.
Вы часто видите обозначение l2 = [x 1 для x в l]. Говорят, что это то же самое:
l2 = [] for x in l: x = x 1 l2.append(x)
Для обоих случаев, если мы начнем с l = [10, 100, 1000], l2 будет:
[11, 101, 1001]
Первый синтаксис — это то, что мы называем пониманием списка.
Возможно, вы предпочитаете обычный цикл for, но я обещаю, что к концу этой статьи вы будете уверенно использовать понимание списков!
Кроме того, давайте проверим подробное официальное определение из документации https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
Понимание списков обеспечивает краткий способ создания списков. Обычными приложениями являются создание новых списков, где каждый элемент является результатом некоторых операций, примененных к каждому члену другой последовательности или итерации, или создание подпоследовательности тех элементов, которые удовлетворяют определенному условию.
Давайте разберемся подробнее. Понимание списков — это просто другой способ написания кода, который короче и проще для создания нового списка. Результатом понимания списка является список, поэтому мы присваиваем его списку.
Давайте рассмотрим вторую часть определения, в которой обсуждаются распространенные примеры. Это следует делать на конкретных примерах.
1.
fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"] uppercase_fast_foods = [food.upper() for food in fast_foods]
После этого заглавные буквы_fast_foods будут такими:
['BURGER', 'PIZZA', 'TACOS', 'FRIED CHICKEN', 'HOT DOG']
Мы используем функцию Upper(), чтобы перевести каждый элемент питания в нашем списке в верхний регистр. В результате все элементы теперь отображаются в верхнем регистре. Вот как мы «создаем новые списки, в которых каждый элемент является результатом некоторых операций, примененных к каждому члену другой последовательности или итерируемого объекта».
2.
fast_foods = ["Burger", "Pizza", "Tacos", "Fried Chicken", "Hot Dog"] foods_with_space = [food for food in fast_foods if " " in food]
После этого food_with_space будет:
['Fried Chicken', 'Hot Dog']
Приведенная выше строка кода извлекает из списка элементы, содержащие пробел. Вот как мы «создаем новые списки, в которых каждый элемент является результатом некоторых операций, примененных к каждому члену другой последовательности или итерируемого объекта».
Я использовал понимание списков во многих задачах, потому что всякий раз, когда я сталкивался со слишком большим количеством циклов for, я думал: «Нет проблем, я просто их упрощу». Оказывается, логика та же, только чище! ?
Без лишних слов, вот некоторые из наиболее подходящих примеров, которые я придумал:
1. Измените каждый элемент списка
foods = ["Burger", "Fries", "Fried Chicken", "Hot Dog", "Pizza"] foods_with_version = [food ' - 2024' for food in foods] print(foods_with_version)
Выход:
['Burger - 2024', 'Fries - 2024', 'Fried Chicken - 2024', 'Hot Dog - 2024', 'Pizza - 2024']
В этом примере мы берем список продуктов питания и добавляем к каждому из них «- 2024». Мы используем понимание списка, чтобы быстро создать новый список с этими обновленными именами.
2. Создать подсписок из списка на основе условия
foods = ["Burger", "Fried Chicken", "Hot Dog", "Fries", "Pizza"] long_foods = [food for food in foods if len(food) > 7] print(long_foods)
Выход:
['Fried Chicken']`
В этом примере мы создаем список продуктов питания и отфильтровываем те, которые содержат более 7 символов. Для этого мы используем понимание списка с условием.
3. Используйте функцию диапазона с пониманием списка, чтобы создать список
x = [i for i in range(10, 20, 2)] print(x)
Выход:
[10, 12, 14, 16, 18]
В этом примере мы создаем список чисел в диапазоне от 10 до 18, используя понимание списка с помощью range().
4. Применить понимание списка к строке
input_string = "hello world" marked_vowels = ['*' if char in 'aeiouAEIOU' else char for char in input_string] print(marked_vowels)
Выход:
['h', '*', 'l', 'l', '*', ' ', 'w', 'o', 'r', 'l', 'd']
В этом последнем примере мы берем строку и отмечаем ее гласные звездочкой (*). Мы используем понимание списка для создания нового списка на основе исходной строки.
В этой статье я изложил все основные идеи, касающиеся понимания списков, от определения до различных примеров, которые объясняют их дальше. Я надеюсь, что все понятно, и с этого момента у вас появится больше мотивации включить в свой код Python понимание списков!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3