Введение в понимание списка Python
Понимание списков Python - это еще один способ создания списков с использованием итерационной операции. Он работает так же, как цикл, но LC используется специально для возврата списков. В выражениях списков есть выражения внутри скобок, такие как создание обычного списка, выражение будет выполняться для всех элементов.
Понимания списков очень полезны в науке о данных, когда считывают списки / фильтруют имена столбцов / удаляют элементы из списков и т. Д. Хотя мы можем использовать циклы и лямбда-функции для выполнения некоторых действий, понимание списков обеспечивает элегантный и простой способ представления того же самого.
Понимание списка может использоваться для замены методов map (), redu () и filter ().
Понимание списка похоже на теорию множеств из школьных классов.
Пример:
( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )
Давайте создадим понимание списка для двух приведенных выше утверждений.
(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))
Выход:
(16, 17, 18, 19) («а», «а», «я», «е», «е»)Понимание списка легко понять и реализовать. В основном они созданы на столах. Есть три вещи, которые следует учитывать при написании синтаксиса для понимания списков.
- Параметр для вывода
- Итерируемый
- условия
Синтаксис может иметь два из вышеперечисленного или 3 из вышеперечисленного в качестве синтаксиса для понимания списка.
Синтаксис:
(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )
Примеры понимания списка Python
Здесь мы обсудим, как использовать понимание списка с помощью Python. Мы увидим примеры по-другому, так как будем запускать их с помощью цикла for, а затем создадим то же самое, используя списочные выражения.
Пример № 1: Нахождение идеальных квадратов
Ниже приведены примеры идеальных квадратов с различными условиями:
1. С для цикла
for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)
2. Использование списочных представлений
(x for x in range(1, 30) if int(x**0.5)==x**0.5)
Выход:
Пример № 2: получить только согласные от предложения
Здесь мы возьмем одно произвольное предложение и попытаемся получить согласные в предложении в качестве нашего вывода.
1. Использование For Loop
def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))
Выход:
С For Loop: wr stdyng lst cmprhnsns
2. Использование списка понимания
def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))
Выход:
Использование списка Compr: wr stdyng lst cmprhnsns
Пример № 3: Создание словаря из двух, в отличие от списков
Вот примеры словаря с различными условиями, приведенными ниже:
1. Использование For Loop
def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))
Выход:
Результат цикла FOR: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
2. Использование списка понимания
def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))
Выход:
Результат LC: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
Преимущества понимания списка Python
Постижения списков выполняют ту же задачу, но по-другому!
Понимание списка имеет много преимуществ по сравнению с циклом и другими методами. Некоторые из преимуществ заключаются в следующем:
- Понимание списка легко понять и сделать код элегантным. Мы можем написать программу с простыми выражениями.
- Понимание списка происходит намного быстрее, чем для цикла и других методов, таких как карта. (То же самое объясняется в следующем примере:
Для примера возьмем пример 1 и рассчитаем время, затрачиваемое разными методами на выполнение одной и той же функции. Сначала мы увидим время, затрачиваемое на цикл «for», а затем время, взятое методом map (), и, наконец, мы увидим время, затраченное на понимание списка.
Таблица показывает время, затрачиваемое различными методами.
1. Для цикла
Пример использования для цикла приведен ниже:
Код:
def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))
2. Метод карты
Пример использования метода карты приведен ниже:
Код:
def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))
3. Список Пониманий
Пример использования списка, приведенного ниже:
Код:
def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))
Выход:
метод | Время |
Для цикла | 787 нс |
Метод Map () | 518 нс |
Список Пониманий | 276 нс |
Очевидно, что время выполнения понимания списка в 2, 85 раза быстрее, чем для цикла, и в 1, 87 раза быстрее, чем метод карты. Понимание списка оставляет позади другие методы с большим отрывом. Тогда могут быть предположения, почему бы нам просто не использовать LC во всех местах, а не в петлях? LC в большинстве случаев быстрее и может заменить петли почти в 80% случаев. Но мы не можем заменить циклы, в некоторых случаях у нас есть хорошее количество условий и классы вложены в цикл. В этих случаях использование LC может быть довольно громоздким и неосуществимым. В таких ситуациях лучше пойти на петли. Хотя можно использовать списки в циклах for, чтобы заменить другие циклы for. Это уменьшит время выполнения, а также поддержит удобство кода.
- Мы можем вкладывать несколько условий в понимание списка.
- LC может выполнять множественные переменные.
- Нет необходимости предоставлять отдельную команду для получения вывода.
- Понимание списка уменьшает сложность кода.
- Понимание списка эффективно.
Вывод
Постижения списков используются для создания списков из итеративного процесса. Понимание списка легко понять / реализовать и делает код элегантным. Понимание списка компактно и удобно для пользователя.
Мы обсудили синтаксис для понимания списка вместе с некоторыми хорошими проницательными примерами. Наконец, мы написали одну программу для определения времени каждого метода. Мы пришли к выводу, что LC в 2, 85 раза быстрее, чем для цикла, и в 1, 87 раза быстрее, чем метод map ().
Рекомендуемые статьи
Это руководство по пониманию списка Python. Здесь мы обсуждаем преимущества понимания списка Python наряду с синтаксисом и примерами с различными условиями. Вы также можете посмотреть следующие статьи, чтобы узнать больше
- Конструктор в Java
- Сортировка в Java
- Конструктор в Java
- JCheckBox в Java
- Руководство по сортировке в C # с примерами
- Функция сортировки в Python с примерами
- Циклы в VBScript с примерами
- Примеры реализации флажка в Bootstrap