Python'da list comprehension

Ko’pincha bitta ro’yxatdan yangisini yasaymiz: har elementni o’zgartirib yoki ba’zilarini tanlab. Buni oddiy for sikli bilan qilsa bo’ladi, lekin Python’da undan ancha ixcham yo’l bor — list comprehension.

Oddiy usul: for sikli

1 dan 5 gacha sonlar kvadratini ro’yxatga yig’amiz:

Python

Uch qator: bo’sh ro’yxat, sikl, append. Bu keng tarqalgan naqsh — Python uni bitta qatorga jamlashga imkon beradi.

List comprehension

Xuddi shu natija, bitta qatorda:

Python

Uni o’ngdan chapga o’qing: “range(1, 6) dagi har x uchun x ** 2 ni ol”. Tuzilishi:

[ifoda  for  element  in  ketma-ketlik]
  • for x in range(1, 6) — nimadan olishni bildiradi.
  • x ** 2 — har element bilan nima qilishni bildiradi.

Shart bilan filtrlash

Oxiriga if qo’shib, faqat kerakli elementlarni tanlash mumkin. 0 dan 9 gacha faqat juft sonlar:

Python

if x % 2 == 0 — shart: faqat unga mos elementlar ro’yxatga tushadi. Bu yerda x o’zgartirilmayapti, faqat tanlanyapti.

O’zgartirish va filtrlashni birga

Ikkalasini birlashtirsa bo’ladi — juft sonlarning kvadratini olamiz:

Python

Avval if filtrlaydi (juftlar), keyin x ** 2 o’zgartiradi (kvadrat).

Amaliy mashq

Sikldan comprehension’ga o’ting:

  1. 1 dan 20 gacha sonlar ro’yxatini oddiy for bilan yarating;
  2. xuddi shuni list comprehension bilan bir qatorda yozing;
  3. faqat juft sonlarni filtrlang;
  4. har sonning kvadratini oling;
  5. ikkalasini birlashtiring: faqat juft sonlarning kvadrati.

Ikki usulni yonma-yon qo’ying — qaysi biri o’qishga qulayroq va nega?

Qisqacha xulosa

  • List comprehension — ro’yxatni bitta qatorda yasash: [ifoda for x in ...].
  • for sikli + append naqshini qisqartiradi.
  • Oxiridagi if bilan elementlarni filtrlash mumkin.
  • O’zgartirish (x ** 2) va filtrlash (if ...) ni birga ishlatsa bo’ladi.
  • Mantiq murakkablashsa — oddiy for sikliga qayting.

Keyingi darsda dekorator — funksiya ustiga qo’shimcha xatti-harakat qo’shadigan kuchli vositani ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi