Понимание списка позволяет сгенерировать список всего одной строкой кода или в сжатой форме.

Пример:

используя цикл for для создания списка, этот список включает первые десять чисел, умноженные на 3.

multiple=[]
for x in range(1, 11):
    multiply=x*3
    multiple.append(multiply)
print(multiple)

вывод:

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

С пониманием списка вы можете сделать все это с помощью всего одной строки кода:

multiple = [x*3 for x in range(1, 11)]
print(multiple)

вывод:

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Это то, что понимание списка делает все шаги всего одной строкой кода.

Синтаксис понимания списка

list_comprehension= [выражение для item в iterable, если условие == True]

  • Выражением может быть любое выражение — отдельный элемент, функция, примененная к элементу, и т. д.
  • Элемент — это элемент в итерируемом,
  • Итерируемый объект — это объект, который вы можете перебирать по списку.
  • если condition==True, для любого условия мы применяем его к списку.

В приведенном выше примере выражение равно x*3, x — элемент, а диапазон (1–11) — итерируемый список.

создание нового списка из значений в списке, который у вас уже есть

* Понимание списка с условием If

В понимании списка мы также можем добавить условие if, которое может помочь нам фильтровать данные. Если у нас есть список из первых десяти чисел, нам нужны только четные числа.

old=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new = [x for x in old if x % 2 == 0]
print(new)

вывод:

[2, 4, 6, 8, 10]

* Понимание списка, если оператор Else

Здесь мы создали простое понимание списка, которое будет хранить все значения old в списке new, если значения которого четные, иначе значения нечетные, тогда он сохранит строку “even” на своем месте и “odd” на своем месте.

old=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new = ['even' if x % 2 == 0 else 'odd' for x in old]
print(new)

вывод:

['odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even']

Чтобы узнать больше о связанных темах, ознакомьтесь со статьями ниже:





Если вам понравился этот пост, пожалуйста, купите мне ко-фай.