Python List Comprehension |
![]() |
Добавил(а) microsin |
На Python существует технология "понимания списка" - list comprehension, предоставляющая сокращенный синтаксис для создания нового списка на основе значений существующего списка. Пример: есть список видов фруктов, и вы хотите получить из него новый список, в котором присутствуют только те фрукты, в названиях которых есть буква "a". Без технологии list comprehension (далее сокращенно LC) для этого вам понадобится написать цикл с оператором проверки условия внутри, примерно так: fruits = ["apple", "banana", "cherry", "kiwi", "mango"] Технология LC позволяет сделать то же самое, всего лишь одной строкой кода: fruits = ["apple", "banana", "cherry", "kiwi", "mango"] [Синтаксис Python List Comprehension] newlist = [expression for item in iterable if condition == True] Выражение LC возвратит новый список, оставив старый список без изменения. condition. Это проверка условия, работающая как фильтр, который позволяет извлекать из списка iterable только те значения, для которых condition вычисляется как True. Например, в новый список newlist попадут только те элементы из iterable (в нашем примере fruits), элементы которых не равны "apple": newlist = [x for x in fruits if x != "apple"] Этот код выведет: ["apple", "banana", "cherry", "kiwi", "mango"] В LC можно опустить проверку условия condition, тогда следующий пример просто создаст новый список как копию старого: newlist = [x for x in fruits] iterable. Это старый список, на основе которого создается новый список newlist. Здесь в качестве iterable может быть любой объект, по элементам которого можно провести итерацию, например массив, строка, список, кортеж (tuple), набор (set) и т. п. Следующий пример создаст список целых чисел от 0 до 9: newlist = [x for x in range(10)] Подобный пример с проверкой условия, создаст список целых чисел от 0 до 4: newlist = [x for x in range(10) if x < 5] expression. Это выражение, которое может быть применено над каждым элементом итерации, но это также результат, которым вы можете манипулировать, прежде чем он попадет в список. Например, следующий код создаст копию оригинального списка fruits, в котором названия фруктов будут символами верхнего регистра: newlist = [x.upper() for x in fruits] Следующий пример заполнит элементы списка newlist словом 'hello': newlist = ['hello' for x in fruits] Выражение expression может также содержать условие, но не как фильтр, а как способ манипулирования содержимым создаваемого списка. Например, вот так будет создан список из старого, где все элементы "banana" заменены на "orange": newlist = [x if x != "banana" else "orange" for x in fruits] [Ссылки] 1. Python List Comprehension site:w3schools.com. |