Введение в понимание списка 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) («а», «а», «я», «е», «е»)

Понимание списка легко понять и реализовать. В основном они созданы на столах. Есть три вещи, которые следует учитывать при написании синтаксиса для понимания списков.

  1. Параметр для вывода
  2. Итерируемый
  3. условия

Синтаксис может иметь два из вышеперечисленного или 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. Понимание списка легко понять и сделать код элегантным. Мы можем написать программу с простыми выражениями.
  2. Понимание списка происходит намного быстрее, чем для цикла и других методов, таких как карта. (То же самое объясняется в следующем примере:

Для примера возьмем пример 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 наряду с синтаксисом и примерами с различными условиями. Вы также можете посмотреть следующие статьи, чтобы узнать больше

  1. Конструктор в Java
  2. Сортировка в Java
  3. Конструктор в Java
  4. JCheckBox в Java
  5. Руководство по сортировке в C # с примерами
  6. Функция сортировки в Python с примерами
  7. Циклы в VBScript с примерами
  8. Примеры реализации флажка в Bootstrap