Comprehensions در پایتون
List، Dict و Set Comprehension — سینتکس فشرده و قدرتمند ساخت کالکشنها
Comprehension چیست؟
Comprehension روشی فشرده و خوانا برای ساخت لیست، دیکشنری و مجموعه.
List Comprehension
# روش سنتی
squares = []
for x in range(5):
squares.append(x ** 2)
# با comprehension
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
با شرط
# اعداد زوج
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
# شرط در خروجی
labels = ["زوج" if x % 2 == 0 else "فرد" for x in range(5)]
print(labels) # ['زوج', 'فرد', 'زوج', 'فرد', 'زوج']
حلقه تو در تو
# ضرب دو لیست
products = [a * b for a in [1, 2] for b in [10, 20]]
print(products) # [10, 20, 20, 40]
Dict Comprehension
# مربع اعداد بهصورت دیکشنری
squares = {x: x ** 2 for x in range(5)}
print(squares) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# با شرط
even_squares = {x: x ** 2 for x in range(10) if x % 2 == 0}
print(even_squares)
Set Comprehension
# حروف یکتای یک رشته
letters = {char for char in "hello world"}
print(letters) # {'h', 'e', 'l', 'o', ' ', 'w', 'r', 'd'}
تبدیل داده
# تبدیل نوع
str_numbers = ["1", "2", "3", "4"]
int_numbers = [int(x) for x in str_numbers]
print(int_numbers) # [1, 2, 3, 4]
# بزرگکردن حروف
words = ["hello", "world"]
upper = [w.upper() for w in words]
print(upper) # ['HELLO', 'WORLD']
فیلتر و تبدیل
# فقط اعداد مثبت، ضرب در ۲
numbers = [-3, 1, -5, 2, 4, -1]
positive_doubled = [x * 2 for x in numbers if x > 0]
print(positive_doubled) # [2, 4, 8]
مثال: شمارش
text = "hello world"
char_count = {char: text.count(char) for char in set(text)}
print(char_count)
خلاصه
| نوع | سینتکس |
|---|---|
| List | [expr for x in iter] |
| Dict | {k: v for x in iter} |
| Set | {expr for x in iter} |
| با شرط | [... for ... if ...] |
این مبحث بخشی از دوره آموزش کامل پایتون است.