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 ...]

این مبحث بخشی از دوره آموزش کامل پایتون است.

ابزارهای مرتبط