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