Python list comprehension


ULASHISH

Ro‘yxatni tushunish

Mavjud ro‘yxat qiymatlari asosida yangi ro‘yxat yaratmoqchi bo‘lganingizda ro‘yxatni tushunish qisqaroq sintaksisni taklif qiladi.

Misol:

Mevalar ro‘yxatiga asoslanib, siz faqat "a" harfi bo‘lgan mevalarni o‘z ichiga olgan yangi listni xohlaysiz.

Ro‘yxatni tushunmasdan, ichida shartli test bilanforoperatorini yozishingiz kerak bo‘ladi:

Misol

fruits = ["apple", "banana", "cherry", "kiwi", "mango"] newlist = [] for x in fruits:   if "a" in x:     newlist.append(x) print(newlist)
O‘zingiz sinab ko‘ring »

Ro‘yxatni tushunish bilan siz buni faqat bitta kod qatori bilan qilishingiz mumkin:

Misol

fruits = ["apple", "banana", "cherry", "kiwi", "mango"] newlist = [x for x in fruits if "a" in x] print(newlist)
O‘zingiz sinab ko‘ring »


Sintaksis

newlist = [expression for item in iterable if condition == True]

Qaytish qiymati yangi list bo‘lib, eski listni o‘zgarishsiz qoldiradi.


Vaziyat

Shart faqatTruega baholanadigan elementlarni qabul qiladigan filtrga o‘xshaydi.

Misol

Faqat "apple" bo‘lmagan narsalarni qabul qiling:

newlist = [x for x in fruits if x != "apple"]
O‘zingiz sinab ko‘ring »

Shart if x != "apple"  boshqa barcha elementlar uchun True qaytaradi "apple" dan tashqari, yangi ro‘yxatda "apple" dan tashqari barcha mevalar mavjud.

Shart ixtiyoriy va o‘tkazib yuborilishi mumkin:

Misol

ifoperatorsiz:

newlist = [x for x in fruits]
O‘zingiz sinab ko‘ring »

Takrorlash mumkin

Takrorlanadigan har qanday takrorlanadigan obyekt bo‘lishi mumkin, masalan, list, kortej, set va boshqalar.

Misol

Takrorlanuvchi yaratish uchunrange()funksiyasidan foydalanishingiz mumkin:

newlist = [x for x in range(10)]
O‘zingiz sinab ko‘ring »

Xuddi shu misol, lekin shart bilan:

Misol

Faqat 5 dan kichik sonlarni qabul qilish:

newlist = [x for x in range(10) if x < 5]
O‘zingiz sinab ko‘ring »

Ifoda

Ifoda iteratsiyaning joriy elementidir, lekin u ham yangi ro‘yxatdagi ro‘yxat elementi kabi tugashidan oldin uni boshqarishingiz mumkin bo‘lgan natijadir:

Misol

Yangi ro‘yxatdagi qiymatlarni katta harf bilan belgilang:

newlist = [x.upper() for x in fruits]
O‘zingiz sinab ko‘ring »

Natijani xohlaganingizcha belgilashingiz mumkin:

Misol

Yangi ro‘yxatdagi barcha qiymatlarni "salom" ga o‘rnating:

newlist = ['hello' for x in fruits]
O‘zingiz sinab ko‘ring »

Ifoda filtr kabi emas, balki natijani boshqarish usuli sifatida shartlarni ham o‘z ichiga olishi mumkin:

Misol

"Banan" o‘rniga "apelsin" ni qaytaring:

newlist = [x if x != "banana" else "orange" for x in fruits]
O‘zingiz sinab ko‘ring »

Yuqoridagi misoldagi ibora shunday deydi:

"Agar banan bo‘lmasa, uni qaytaring, agar banan bo‘lsa, apelsinni qaytaring".



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!