Python list comprehension
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:
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!
