Список понимания
Привет Pythonista Сегодня вы собираетесь узнать о Понимание списка , очень мощная особенность Python для использования при создании или фильтрации списка A Список Python на основе определенных ограничений.
давай начал
Представьте, что вы хотите создать Список кубических чисел от 1 к 100 Создание кубики чисел без Использование Понимание списка Обычно это выглядит так.
Кубика чисел без понимания списка
>>> cubics = [] >>> for number in range(1, 101): ... cubic = number**3 ... cubics.append(cubic) ... >>> cubics [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 1331, 1728, 2197, 2744, 3375, 4096, 4913, 5832, 6859, 8000, 9261, 10648, ...... ]
Кубика чисел, используя понимание списка
>>> cubics = [number**3 for number in range(1, 101)] >>> print(cubics) [ 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 1331, 1728, 2197, 2744, 3375, 4096, 4913, 5832, 6859, 8000, 9261, 10648, 12167, 13824, 15625, .... ]
Как мы видим, мы сделали То же самое с Понимание списка Но вместо этого это делать в 4 строки кода, мы сделали это просто один Отказ не круто?
* Понимание списка позволяет делать удивительные вещи в одну строку (* одноклассник ), что-то потребуется даже более 6 строк.
Синтаксис понимания списка
List = [element for element in iterable]
Декартовое изделие с использованием понимания списка
Если A и B – два не пустые наборы, то их Декартово Продукт A × B – это набор Все заказанные пары элементов из A и B, с Список понимания Вы найдете его одним строкой, как показано ниже;
>>> a = [1 , 3 , 5, 7] >>> b = [2, 4, 6, 8] >>> product = [(i , j) for i in a for j in b] >>> print(product) [(1, 2), (1, 4), (1, 6), (1, 8), (3, 2), (3, 4), (3, 6), (3, 8), (5, 2), (5, 4), (5, 6), (5, 8), (7, 2), (7, 4), (7, 6), (7, 8) ]
Условные блоки в списке понимание
Помимо всего Итализация над последовательности , вы также можете поставить Условный Заявления, такие как и иначе внутри понимание Логика для выбора элементов на основе определенных условий.
Даже номер с использованием списка понимание
Допустим, мы хотим сделать Список даже номеров из 203 к 289 Использование Понимание списка , это также может быть сделано в одну строку, как показано ниже;
>>> even_numbers = [number for number in range(203, 289) if number%2==0] >>> print(even_numbers) [ 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288 ]
Фильтрация Имея, используя понимание списка
Это пример программы, которая использует понимание списка для фильтрации кандидатов, которые выше или равны 18.
>>> candidates = [ ... ('John', 15), ... ('Silyvia', 34), ... ('Hamis', 17), ... ('Alphonce', 22), ... ('Grace', 27) ... ] >>> >>> above_18 = [candidate for candidate in candidates if candidate[1]>=18] >>> print(above_18) [('Silyvia', 34), ('Alphonce', 22), ('Grace', 27)]
Загрузка определенных файлов с использованием понимания списка
Давайте использовать список списков для загрузки всех путей изображения в нашем текущем каталоге
>>> import os >>> images = [img for img in os.listdir() if img.endswith('.jpg')] >>> print(images) ['AI gallery.jpg']
Сравнивая 2D Array Использование пометки списка]
Вы также можете использовать понимание списка для сглаживания 2D массива в один 1D массив, итерацией на все элементы в списке.
>>> data =[(1, 2), (3, 4), (5, 6)] >>> flattened = [n for in_data in data for n in in_data] >>> print(flattened) [1, 2, 3, 4, 5, 6]
Скалярный продукт с использованием понимания списка
Появление списка также может быть использовано для поиска скалярного потенциала путем умножения по заданному номеру на каждом элементе в неразмерном независимо, как показано ниже;
>>> vector = [10, 25, 32] >>> vector3 = [n * 3 for n in vector] >>> print(vector) [10, 25, 32]
Ну, это все на сегодня, надеюсь, вы найдете его полезным, теперь не стесняйтесь поделиться сейчас с вашим собратьем.
В случае любого предложения или комментария, бросьте его в окно комментариев, и я вернусь к вам как можно скорее.
Оригинальная статья можно найти на Kalebujordan.com.
Оригинал: “https://dev.to/kalebu/a-guide-to-python-list-comprehension-28d3”