Вступ до розуміння списку Python

Розуміння списку Python - це ще один спосіб створення списків за допомогою операції ітерації. Це працює так само, як працює цикл, але LC використовується спеціально для повернення списків. Поняття списку мають вирази всередині дужок, як, наприклад, створення нормального списку, вираз буде виконуватися для всіх елементів.

Означення списків дуже корисні в науці даних, де один список читання / назви стовпців фільтрів / видалення елементів зі списків і т.д.
Означення списків можна використовувати для заміни методів map (), Reduct () та 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) ('a', 'a', 'i', 'e', ​​'e')

Ознайомлення зі списком легко зрозуміти та реалізувати. В основному вони створюються на таблицях. Під час написання синтаксису для розуміння списків слід враховувати три речі.

  1. Параметр для виведення
  2. Ітерабельний
  3. Умови

Синтаксис може мати два з вищезазначених або 3 вищезазначених як синтаксис для розуміння списку.

Синтаксис:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Приклади розуміння списку Python

Тут ми обговоримо, як використовувати розуміння списку за допомогою python. Ми побачимо приклади по-іншому, як будемо запускати його за допомогою циклу, а потім створимо ті самі, використовуючи розуміння списку.

Приклад №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. Використання для циклу

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))

Вихід:

З для циклу: 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. Використання для циклу

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 і обчислимо час, який зайнято різними методами для виконання однієї і тієї ж функції. По-перше, ми побачимо час, взятий «для циклу», а потім час забирається методом 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% випадків. Але ми не можемо замінити циклі, є деякі випадки, коли у нас є хороша кількість умов, а класи вкладені в цикл. У цих випадках використання ЖК може бути досить громіздким, а також неможливим. У таких ситуаціях краще піти на петлі. Хоча можна використовувати розуміння списку in для циклів, щоб замінити інші для циклів. Це скоротить час виконання, а також збереже зручність використання коду.

  • Ми можемо вкласти декілька умов у розумінні списку.
  • 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