Автор оригинала: Pankaj Kumar.
Использование списка понимание в Python
Привет всем! Сегодня мы поговорим о том, как мы можем использовать список пометков в Python.
Понимание списка – это, как правило, синтаксический сахар, который облегчает чтение и запись кода.
Зачастую, когда мы имеем дело с кодом, связанным с созданием списков, обременительно писать вложенные петли снова и снова.
Python сделал это проще для нас, введя эту функцию.
Давайте теперь посмотрим, как мы можем использовать это в наших программах, взяв подходящие примеры!
Основная структура понимания списка
Давайте рассмотрим следующий код, написанный нормально:
word = "Hello from AskPython" letters = [] for letter in word: letters.append(letter) print(letters)
Выход
['H', 'e', 'l', 'l', 'o', ' ', 'f', 'r', 'o', 'm', ' ', 'A', 's', 'k', 'P', 'y', 't', 'h', 'o', 'n']
Вышеуказанный фрагмент печатает список букв в нашем Слове.
Мы можем использовать список пометков для сокращения этого кода, поскольку элементы списка имеют общую недвижимость: они являются буквами, и они будут добавлены к списку.
Давайте теперь используем понимание списка, чтобы сделать это более короче и читаемым:
word = "Hello from AskPython" letters = [letter for letter in word] print(letters)
Выход
['H', 'e', 'l', 'l', 'o', ' ', 'f', 'r', 'o', 'm', ' ', 'A', 's', 'k', 'P', 'y', 't', 'h', 'o', 'n']
Посмотрите, как это легко? Намерение кода сделано понятно: мы подбираем буквы слова и добавьте его в наш список напрямую!
Теперь мы можем использовать понимание списка с другими Iterables!
Давайте возьмем еще один пример, где мы можем генерировать квадраты чисел от 1 до 10.
Обычный подход будет следующим:
squares = [] for i in range(1, 11): squares.append(i * i) print(squares)
Выход
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Хотя это достаточно мало, мы можем сделать лучше, используя понимание списка. Мы можем сократить это только к двум линиям кода!
squares = [i * i for i in range(1, 11)] print(squares)
Мы теперь показали вам силу понимания списка! Давайте теперь добавим еще более специю, имея дело с условными, такими как Если
и еще
!
Использование условий в понимании списка
Мы можем использовать Если
и еще
Условные условные В нашем списке понимание.
Давайте рассмотрим первый случай, где у нас есть только Если
условие.
Общая структура этого типа списка понимается следующим образом:
list = [item for item in iterable if condition]
Так вот, Список
будет состоит только из Предмет
где Состояние
Справедливо.
Давайте возьмем наш предыдущий пример построения квадратов и ограничить его только даже номерам, используя Если
Отказ
squares = [i * i for i in range(1, 11) if i % 2 == 0] print(squares)
Выход
[4, 16, 36, 64, 100]
Действительно, мы можем получить только тесные элементы квадраты здесь, так как I% 2
Только если я даже.
Давайте теперь возьмем второй случай, где у нас есть еще
Состояние также. Структура теперь будет выглядеть так:
list = [value1 if condition else value2 for item in iterable]
Здесь список будет содержать элементы Value1
Если Состояние
и элементы Значение2
Если Состояние
Отказ
Давайте теперь возьмем пример, где мы продолжаем печатать целые квадраты до Я <= 5
Отказ Если я> 5, мы будем печатать 0 вместо этого.
Нашему списку понимание теперь будет выглядеть так:
my_list = [i * i if i <= 5 else 0 for i in range(10)] print(my_list)
Выход
[0, 1, 4, 9, 16, 25, 0, 0, 0, 0]
Как видите, список содержит только квадраты всех номеров. Остальные элементы установлены на 0!
Мы также можем использовать другие условные условия, а даже функции лямбда, если мы хотим!
Вот немного надуманный пример, который использует лямбда
Вычислить последовательные пары-суммы от 0. (0, 1 + 2, 2 + 3, 3 + 4 ..)
pair_sums = [(lambda x, y: x + y)(i, j) if i > 1 else 0 for i, j in zip(range(1, 11), range(0, 10))] print(pair_sums)
Выход
[0, 3, 5, 7, 9, 11, 13, 15, 17, 19]
Как видите, этот код не самый читаемый, и вам, возможно, было лучше с чем-то другим!
Итак, будьте осторожны, чтобы не использовать состав списка, если вы пытаетесь сделать слишком много одновременно. Лучше придерживаться этого метода, когда вы хотите запустить простую контурное операторное утверждение для создания списков, а не при выполнении математических расчетов на каждом элементе индивидуально.
Заключение
В этой статье мы узнали об использовании семантики понимания списка Python. Это облегчает уменьшение письма повторяющегося кода снова и снова, используя итеративные петли!
Рекомендации
- Статья Аскеппина на списке Python