List comprehension bilan tanishish
List comprehension mavjud ro'yxatning qiymatlariga asoslanib yangi ro'yxat yaratishning ixcham usulini taklif etadi.
Aytaylik, bizda sonlar ro'yxati bor va biz ro'yxatdagi har bir elementning ikki barobar qiymatini o'z ichiga olgan yangi ro'yxat yaratmoqchimiz.
numbers = [1, 2, 3, 4]
# yangi ro'yxat yaratish uchun list comprehension
doubled_numbers = [num * 2 for num in numbers]
print(doubled_numbers)
Natija
[2, 4, 6, 8]
Mana list comprehension qanday ishlashi:

[ifoda for element ro'yxatda if shart == True]
Bu yerda,
ro'yxatdagi har bir element uchun, agar shart True bo'lsa, ifodani bajaring.
Eslatma: List comprehension'dagi if operatori ixtiyoriy.
List comprehension kodni for siklidan ko'ra tozaroq va ixchamroq qiladi.
Keling, ro'yxatning har bir elementining kvadratini ham for sikli, ham list comprehension yordamida chop etuvchi dastur yozamiz.
for Loop
numbers = [1, 2, 3, 4, 5]
square_numbers = []
# har bir elementni kvadratga oshirish uchun for sikli
for num in numbers:
square_numbers.append(num * num)
print(square_numbers)
# Natija: [1, 4, 9, 16, 25]
List Comprehension
numbers = [1, 2, 3, 4, 5]
# list comprehension yordamida yangi ro'yxat yaratish
square_numbers = [num * num for num in numbers]
print(square_numbers)
# Natija: [1, 4, 9, 16, 25]
Python for sikli haqida bilganingizdan so'ng, list comprehension'ni tushunish ancha osonroq.
List comprehension mavjud ro'yxatlarni filtrlash uchun if...else kabi shartli operatorlardan foydalanishi mumkin.
Keling, list comprehension bilan if operatoriga misolni ko'ramiz.
# ro'yxatdan juft sonlarni filtrlash
even_numbers = [num for num in range(1, 10) if num % 2 == 0 ]
print(even_numbers)
# Natija: [2, 4, 6, 8]
Bu yerda, list comprehension range(1, 10)dagi son juft yoki toq ekanligini tekshiradi. Agar juft bo'lsa, u sonni ro'yxatga qo'shadi.
Eslatma: range() funksiyasi sonlar ketma-ketligini generatsiya qiladi. Ko'proq bilish uchun, Python range() sahifasiga tashrif buyuring.
Keling, juft va toq sonlarni topish uchun list comprehension bilan if...elsedan foydalanamiz.
numbers = [1, 2, 3, 4, 5, 6]
# juft va toq sonlarni topish
even_odd_list = ["Even" if i % 2 == 0 else "Odd" for i in numbers]
print(even_odd_list)
Natija
['Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even']
Bu yerda, agar numbers ro'yxatidagi element 2ga bo'linsa, u even_odd_list ro'yxatiga Evenni qo'shadi. Aks holda, u Oddni qo'shadi.
Keling, 5ga bo'linadigan juft sonlarni topish uchun list comprehension bilan ichma-ich ifdan foydalanamiz.
# 5ga bo'linadigan juft sonlarni topish
num_list = [y for y in range(100) if y % 2 == 0 if y % 5 == 0]
print(num_list)
Natija
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
Bu yerda, list comprehension ikkita shartni tekshiradi:
y 2ga bo'linadimi yoki yo'qmi.y 5ga bo'linadimi yoki yo'qmi.Agar y ikkala shartni ham qanoatlantirsa, son num_listga qo'shiladi.
List comprehension'ni ro'yxatdan boshqa iterable'lar bilan ham ishlatishimiz mumkin.
word = "Python"
vowels = "aeiou"
# "Python" satrida unlini topish
result = [char for char in word if char in vowels]
print(result)
# Natija: ['o']
Bu yerda, biz 'Python' satridagi unlilarni topish uchun list comprehension'dan foydalandik.
List comprehension'da ichma-ich sikllardan ham foydalanishimiz mumkin. Keling, ko'paytirish jadvalini hisoblovchi kod yozamiz.
multiplication = [[i * j for j in range(1, 6)] for i in range(2, 5)]
print(multiplication)
Natija
[[2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20]]
Mana ichma-ich list comprehension qanday ishlashi:

Keling, ichma-ich for sikli yordamida ekvivalent kodni ko'ramiz.
Ekvivalent ichma-ich for sikli
multiplication = []
for i in range(2, 5):
row = []
for j in range(1, 6):
row.append(i * j)
multiplication.append(row)
print(multiplication)
Bu yerda, ichma-ich for sikli ichma-ich list comprehension bilan bir xil natijani hosil qiladi. Ko'rishimiz mumkinki, list comprehension bilan yozilgan kod ancha toza va ixcham.
List comprehension bilan bir qatorda, biz ro'yxatlar bilan ishlash uchun lambda funksiyalaridan ham foydalanamiz.
List comprehension odatda ro'yxatni ba'zi shartlarga asoslanib filtrlash uchun ishlatilsa, lambda funksiyalari odatda map() va filter() kabi funksiyalar bilan birga ishlatiladi.
Ular murakkab amallar uchun yoki anonim funksiya talab qilinganda ishlatiladi.
Keling, bir misolni ko'ramiz.
numbers = [5, 6, 7, 8, 9]
# lambda funksiyasi yordamida yangi ro'yxat yaratish
square_numbers = list(map(lambda num : num**2 , numbers))
print(square_numbers)
Natija
[25, 36, 49, 64, 81]
Xuddi shu natijaga list comprehension yordamida ham erishishimiz mumkin:
# list comprehension yordamida yangi ro'yxat yaratish
square_numbers = [num ** 2 for num in numbers]
Agar ikkala kodni solishtirsak, list comprehension to'g'ridan-to'g'ri va o'qish hamda tushunish osonroq.
Shuning uchun, murakkab amallarni bajarishimiz kerak bo'lmasa, list comprehension'ga sodiq qolishimiz mumkin.
Pythonda lambda funksiyalarining ishlatilishi haqida ko'proq bilish uchun, Python Lambda/Function sahifasiga tashrif buyuring.