Увод у разумевање Питхон листе

Разумевање Питхон листе је још један начин креирања пописа операцијом понављања. Ради на исти начин као што ради петља, али ЛЦ се користи посебно за враћање листа. Схваћања пописа имају изразе унутар заграда као што је креирање нормалне листе, израз ће се извршити за све елементе.

Схваћања пописа врло су корисна у науци о подацима, где једна листа за читање / имена ступаца филтрирања / уклањање ставки са листа итд. Иако можемо да користимо петље и ламбда функције за извршавање неке акције, разумевање листе пружа елегантан и једноставан начин представљања истог.
Схваћања пописа могу се користити за замену метода мапа (), редукције () и филтрирања ().
Схватање пописа је попут Теорије постављања из разреда средње школе.

Пример:

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

Примери разумевања Питхон листе

Овде ћемо разговарати о томе како да користимо разумевање листе користећи питхон. Примере ћемо видети на другачији начин док ћемо га изводити користећи петљу и затим ћемо креирати исте користећи спискове разумевања.

Пример # 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))

Излаз:

Витх Фор Лооп: вр стдинг лст цмпрхнснс

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

Излаз:

Коришћење листе Цомпр: вр стдинг лст цмпрхнснс

Пример # 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)))

Излаз:

ФОР-лооп резултат: ('РДБ': 'Аамире', 'Вантед': 'Салман', 'ДДЛГ': 'СРК', 'Схолаи': 'Амитабх', 'Вар': 'Хритик')

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

Излаз:

ЛЦ резултат: ('РДБ': 'Аамире', 'Вантед': 'Салман', 'ДДЛГ': 'СРК', 'Схолаи': 'Амитабх', 'Вар': 'Хритик')

Предности разумевања Питхон листе

Листе са схватањем обављају исти задатак, али на другачији начин!

Схватање пописа има много предности над петљом и другим методама. Неке од предности су следеће:

  1. Разумевања пописа лако је разумети и чине код елегантним. Програм можемо написати једноставним изразима.
  2. Схваћања пописа су бржа него код петље и других метода попут мапе. (Исто је објашњено у доњем примеру:

За референцу ћемо узети пример 1 и израчунаћемо време потребно различитим методама за извршавање исте функције. Прво ћемо видети време које је узело „за петљу“, а затим време одузето мап () методом и коначно ћемо видети време које узимају схватања у списку.

Табела приказује време потребно различитим техникама.

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 нс
Мап () метода518 нс
Листа схватања276 нс

Јасно да је време трајања разумевања листе 2, 85 пута брже него код петље и 1, 87 пута брже од методе мапирања. Схваћања пописа остављају за собом друге методе с великом разликом. Може се нагађати зашто онда једноставно не користимо ЛЦ на свим местима и не петље? ЛЦ је бржи у већини случајева и може заменити петље у готово 80% случајева. Али не можемо заменити петље, постоје неки случајеви који имају добар број услова и класе су угнијежђене у петљи. У овим случајевима употреба ЛЦ-а може бити прилично незграпна, а такође и неизводљива. У таквим ситуацијама је боље потражити петље. Иако се може користити разумевање листе ин за петље да се замени друго за петље. Смањиће време извршења као и одржати пријатност кода.

  • У разумевању листе можемо уложити више услова.
  • ЛЦ може да врши вишеструке манипулације променљивим.
  • Нема потребе да дајете засебну команду да бисте добили излаз.
  • Списак пописа смањује сложеност кода.
  • Разумевање пописа је ефикасно.

Закључак

Схваћања пописа користе се за креирање листа из итеративног процеса. Схваћања пописа лако је разумети / имплементирати и чини код елегантним. Списак пописа је компактан и једноставан за употребу.

Размотрили смо синтаксу за разумевање пописа, заједно са неколико добрих увидљивих примера. Најзад смо написали један програм да добијемо тајминг од сваке методе. Закључили смо да је ЛЦ 2, 85 пута бржи него код петље и 1, 87 пута бржи од методе мап ().

Препоручени чланци

Ово је водич за Разумевање Питхон листе. Овде смо разговарали о предностима разумевања питхон листе заједно са синтаксом и примерима са различитим условима. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Конструктор на Јави
  2. Сортирање на Јави
  3. Конструктор на Јави
  4. ЈЦхецкБок на Јави
  5. Водич за поређење у Ц # са примерима
  6. Функција сортирања у Питхон-у са примерима
  7. Петље у ВБСцрипт са примерима
  8. Примери за имплементацију потврдног оквира у оквиру за покретање система

Категорија: