7.1 Çarpma
Python-da elementlərin sayını artırmaq üçün istifadə olunan rahat bir sintaksis var. Bunun üçün sadə bir çarpma operatorundan istifadə edilir.
Sətirlərin yaradılması
Bunu sətirlərə tətbiq edə bilərsiniz:
print("Mama" * 5) # MamaMamaMamaMamaMama çap edəcək
Yaxud, məsələn, tez bir bölücü sətir çap edə bilərsiniz:
print("-" * 40) # ---------------------------------------- çap edəcək
Siyahıların yaradılması
Həmçinin siyahıdakı elementlərin sayını artırmaq üçün istifadə edilə bilər:
print(["apple"] * 5) # ['apple', 'apple', 'apple', 'apple', 'apple'] çap edəcək
Bu operator daha praktik tətbiq imkanına malikdir. Məsələn, 10 elementdən ibarət və sıfırlarla dolu siyahı yaratmaq istəyirsiniz:
alist = [0] * 10
print(alist) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] çap edəcək
Hətta ikiölçülü massiv də yarada bilərsiniz. Məsələn, 20x10 ölçülü, sıfırlarla dolu bir massiv yaratmaq istəyirsiniz. Bu da çox asandır:
alist = [[0] * 10] * 20
print(alist) # [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...] çap edəcək
Çox rahatdır, deyilmi?
7.2 List Comprehension
Python-da çox faydalı bir alət var, adı «List Comprehension» (siyahı daxil etmələri, siyahı generasiyası). Bu alət rahat və kompakt yolla siyahılar yaratmağa imkan verir. Sintaksis baxımından bu vasitə yeni siyahılar yaratmağa kömək edir: iterasiya olunan obyektin hər bir elementinə ifadə tətbiq edərək bir neçə sətrdə kod yazmaq əvəzinə, bunu bir sətrlik kodda etmək mümkündür.
Sözlə izah etməkdən çox, göstərmək daha asandır. Bu sintaksis aləti belə görünür:
[ifadə for dəyişən in ardıcıl]
Harada ki:
-
dəyişən
— hər hansı bir dəyişənin adına işarə edir, -
ardıcıl
— dəyişənin qəbul etdiyi dəyərlərin ardıcıllığıdır (bu, siyahı, sətir və yarange
funksiyası vasitəsilə yaradılmış obyekt ola bilər), -
ifadə
— adətən generatorda istifadə olunan dəyişəndən asılı ifadədir və bu ifadə siyahının elementlərini doldurur.
Vacib!
Bütün ifadə kvadrat mötərizələr içində olmalıdır.
Aşağıda generasiya nümunələri verilmişdir:
n sıfırdan ibarət siyahı yaratmaq üçün generatordan istifadə edə bilərik:
alist = [0 for i in range(100)]
Tam ədədlərin kvadratları ilə doldurulmuş siyahı yaratmaq üçün belə etmək olar:
n = 5
alist = [i ** 2 for i in range(n)]
1-dən n-ə qədər tam ədədlərlə doldurulmuş siyahı yaratmaq üçün:
n = 10
alist = [i + 1 for i in range(n)]
Random modulunun randrange()
funksiyasını istifadə edərək, 1-dən 9-a qədər təsadüfi ədədlərlə doldurulmuş siyahı belə yaradıla bilər:
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 List Comprehension ilə Dövr
List Comprehension yalnız siyahı yaratmaq üçün istifadə olunmur. Əslində, bu sadəcə for dövrünün qısa yazılış formasıdır.
Məsələn, bunun vasitəsilə sadəcə siyahıdan bəzi dəyərləri ekrana çıxarmaq olar:
alist = ["alma", "banan", "gilas"]
[print(x) for x in alist]
Hətta klaviaturadan dəyərlər daxil etmək mümkündür:
a = [input() for i in range(int(input()))]
Bu nümunədə siyahı standart girişdən daxil edilən sətirlərdən ibarət olacaq: əvvəlcə siyahının elementlərinin sayını daxil etmək lazımdır (bu dəyər range
funksiyasının arqumenti kimi istifadə olunur), sonra isə təyin olunmuş sayda sətir daxil edilməlidir.
Bildiyiniz formalı kod isə belə görünəcək:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
Ümumiyyətlə, List Comprehension ilə çox şey etmək olar:
Şərtlərdən istifadə mümkündür:
İfadəyə şərtlərin əlavə olunması elementlərin filtr edilməsinə imkan verir, məsələn, yalnız cüt ədədlərdən ibarət siyahı yaratmaq olar:
[x for x in range(10) if x % 2 == 0]
Daxili dövrələr:
Generator daxili dövrələrdən istifadə etməyə imkan verir, məsələn, çoxölçülü massivlər yaratmaq üçün:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION