Понимание списка предлагает более короткий синтаксис, если вы хотите создать новый список на основе значений существующий список.
Пример :
На основе списка фруктов вам нужен новый список, содержащий только фрукты. с буквой «а» в названии.
Без понимания списка вам придется написать оператор for
с условным тестом внутри:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Вывод результата выполнения:
['apple', 'banana', 'mango']
Благодаря пониманию списков вы можете сделать все это с помощью всего лишь одной строки кода:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
Вывод результата выполнения:
['apple', 'banana', 'mango']
newlist = [expression for item in iterable if condition == True]
Возвращаемое значение — новый список, старый список остается неизменным.
Условие похоже на фильтр, который принимает только те элементы, значение которых соответствует Верно
.
Принимайте только те товары, которые не являются «яблочными»:
newlist = [x for x in fruits if x != "apple"]
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if x != "apple"]
print(newlist)
Вывод результата выполнения:
Состояние if x != "apple" вернет True
для всех элементов, кроме чем «яблоко», в результате чего новый список будет содержать все фрукты, кроме «яблока».
условие не является обязательным и может быть опущено:
Без оператора if
:
newlist = [x for x in fruits]
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits]
print(newlist)
Вывод результата выполнения:
iterable может быть любым итерируемым объектом, например списком, кортежем, набором и т. д.
Вы можете использовать функцию range()
для создания итерации:
newlist = [x for x in range(10)]
Попробуйте сами →
newlist = [x for x in range(10)]
print(newlist)
Вывод результата выполнения:
Тот же пример, но с условием:
Принимайте только числа ниже 5:
newlist = [x for x in range(10) if x < 5]
Попробуйте сами →
newlist = [x for x in range(10) if x < 5]
print(newlist)
Вывод результата выполнения:
выражение — это текущий элемент итерации, но оно также является результат, которым вы можете манипулировать, прежде чем он превратится в элемент списка в новом список:
Установите значения в новом списке в верхний регистр:
newlist = [x.upper()
for x in fruits]
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x.upper() for x in fruits]
print(newlist)
Вывод результата выполнения:
Вы можете установить результат по своему усмотрению:
Установите для всех значений в новом списке значение «привет»:
newlist = ['hello' for x in fruits]
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = ['hello' for x in fruits]
print(newlist)
Вывод результата выполнения:
выражение также может содержать условия, но не как фильтр, а как способ манипулировать результатом:
Вернуть «апельсин» вместо «банан»:
newlist = [x if x != "banana" else "orange"
for x in fruits]
Попробуйте сами →
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x if x != "banana" else "orange" for x in fruits]
print(newlist)
Вывод результата выполнения:
выражение в приведенном выше примере говорит:
"Верните товар, если это не банан; если это банан, верните оранжевый".