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.