Loading...

Генераторлордун тизмеси(Генераторы списков)

Python тизме генераторлору \List comprehension

Тизме генераторлору - бул тизмени түзүүгө жана аны белгилүү бир баалуулуктар менен дароо толтурууга мүмкүндүк берген абдан күчтүү жана ыңгайлуу функция. Жана тизме генераторунун негизги плюс - бул бир сапка туура келет.

Тизме генераторлору төмөнкү үлгү боюнча курулган:

[выражение for переменная in последовательность]

Бул шаблонду колдонуу менен биз биринчи генераторду жазабыз.

@A@a = [i for i in range(10)]

print(a)@A@

@T@[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]@T@

 

@A@a = [0 for i in range(7)]

print(a)@A@

@T@[0, 0, 0, 0, 0, 0, 0]@T@

Биздин for цикли 7 жолу аткарылгандыктан, циклден мурун келген туюнтма маанисин ушунча жолу алмаштырабыз, биздин учурда ал жөн эле 0. Ошондой эле, эки эмес, i. өзгөрмөсүн көрсөтсөңүз болот.

Туюнтма катары, сиз дагы татаал конструкцияларды көрсөтсөңүз болот, мисалы, сандын квадратынын чыгышы:

@A@a = [i**2 for i in range(10)]

print(a)@A@

 

@T@[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]@T@

 

 range функциясынын чектерин да өзгөртүүгө болот. Чекти 1ден 15ке өзгөртөлү, 4кө бөлгөндөн кийин калганын да алабыз. 4кө бөлгөндө 4 гана вариант болушу мүмкүн: 0, 1, 2, 3.

@A@a = [i%4 for i in range(1, 15)]

print(a)@A@

 

Коллекция катары сиз башка кайталануучу объекттерди да айланып өтсөңүз болот: саптар, тизмелер ж.б.

 

 

@A@a = [i for i in "hello"]

print(a)

 

b = [i*5 for i in "hello"]

print(b)@A@

 

@T@['h', 'e', 'l', 'l', 'o']

['hhhhh', 'eeeee', 'lllll', 'lllll', 'ooooo']@T@

 

Ошентип, биз саптын элементтеринен турган тизмени алабыз. Ошондой эле, саптын элементтерин көбөйтүүнү колдонуу менен кайталаса болот.