Skip to content

Ro‘yxatni qisqa yozish / takrorlash ​

Ro‘yxatni qisqa yozish ​

Ro‘yxatni qisqa yozish (list comprehension) mavjud ro‘yxat qiymatlari asosida yangi ro‘yxat yaratishda qisqaroq sintaksis taklif etadi.

Misol ​

Mevalar ro‘yxatidan faqat nomida "a" harfi borlarini olish.
Oddiy usul (list comprehension ishlatmasdan):

python
mevalar = ["olma", "banan", "gilos", "kivi", "mango"]
yangi_royhat = []

for x in mevalar:
  if "a" in x:
    yangi_royhat.append(x)

print(yangi_royhat)  # Natija: ['olma', 'banan', 'gilos', 'mango']

List comprehension yordamida:

python
mevalar = ["olma", "banan", "gilos", "kivi", "mango"]
yangi_royhat = [x for x in mevalar if "a" in x]
print(yangi_royhat)  # Natija: ['olma', 'banan', 'gilos', 'mango']

Sintaksis ​

python
yangi_royhat = [ifoda for element in takrorlanuvchi if shart == True]

Natijada yangi ro‘yxat hosil bo‘ladi, eski ro‘yxat esa o‘zgarmaydi.

Shart (Condition) ​

Shart faqat True natija beradigan elementlarni ro‘yxatga qo‘shadi.

python
yangi_royhat = [x for x in mevalar if x != "olma"]

Bu shart "olma" dan boshqa barcha elementlar uchun True qaytaradi, shuning uchun "olma" ro‘yxatda bo‘lmaydi.

Shart qo‘shish majburiy emas:

python
yangi_royhat = [x for x in mevalar]  # Mevalar ro‘yxatining nusxasi

Takrorlanuvchi obyekt (Iterable) ​

Takrorlanuvchi obyekt ro‘yxat, kortej, to‘plam yoki boshqa iterativ turlar bo‘lishi mumkin.

python
yangi_royhat = [x for x in range(10)]  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Shart qo‘shilgan holat:

python
yangi_royhat = [x for x in range(10) if x < 5]  # [0, 1, 2, 3, 4]

Ifoda (Expression) ​

Ifoda har bir takroriy elementni qanday natijaga aylantirishni belgilaydi.

python
yangi_royhat = [x.upper() for x in mevalar]  # ['OLMA', 'BANAN', 'GILOS', 'KIVI', 'MANGO']

Barcha qiymatlarni "Salom" so‘ziga almashtirish:

python
yangi_royhat = ["Salom" for x in mevalar]  # ['Salom', 'Salom', 'Salom', 'Salom', 'Salom']

Shartli o‘zgartirish:

python
yangi_royhat = [x if x != "banan" else "apelsin" for x in mevalar]

Diqqat

Yuqoridagi misolda "banan" "apelsin" bilan almashtiriladi, qolgan elementlar o‘zgarishsiz qoladi.

List Comprehension (Ro'yxatni qisqa yozish) mavzusida test

Savol 1 / 7

List comprehension ning umumiy sintaksisi qaysi ko'rinishda to'g'ri berilgan?