مقدمهای بر عملگرهای عضویت (Membership Operators) در پایتون
در دنیای برنامهنویسی، گاهی لازم است بررسی کنیم که آیا یک مقدار در داخل یک لیست، رشته، دیکشنری یا مجموعه (Set) وجود دارد یا نه. عملگرهای عضویت در پایتون (Membership Operators in Python) دقیقاً برای این کار طراحی شدهاند. این عملگرها به شما امکان میدهند که وجود یا عدم وجود یک مقدار را در یک مجموعه داده بررسی کنید.
در پایتون دو عملگر اصلی برای بررسی عضویت وجود دارد:
✔️ عملگر in → بررسی میکند که آیا یک مقدار در یک لیست، رشته یا دیکشنری وجود دارد.
✔️ عملگر not in → بررسی میکند که آیا مقدار موردنظر در مجموعه وجود ندارد.
چرا عملگرهای عضویت مهم هستند؟
تصور کنید که یک لیست از کاربران ثبتشده در سایت خود دارید و میخواهید بررسی کنید که آیا یک کاربر خاص در این لیست وجود دارد یا خیر. یا مثلاً میخواهید چک کنید که آیا یک حرف خاص در یک رشته وجود دارد. در چنین مواقعی عملگر in و not in در پایتون به شما کمک میکنند تا این بررسی را با سینتکس ساده و قابلفهم انجام دهید.
مثال ساده برای درک بهتر
users = ["Ali", "Reza", "Sara"]
# بررسی وجود کاربر در لیست
if "Ali" in users:
print("کاربر علی در سیستم ثبت شده است.")
# بررسی عدم وجود کاربر
if "Mehdi" not in users:
print("کاربر مهدی ثبت نشده است.")
در این مثال، برنامه بررسی میکند که آیا “Ali” در لیست users وجود دارد یا نه.
همچنین، بررسی میشود که “Mehdi” در لیست کاربران وجود ندارد و در صورت عدم وجود، پیام مناسبی نمایش داده میشود.
Membership Operators در Python چیست؟
در پایتون، عملگرهای عضویت (in و not in) برای بررسی وجود یا عدم وجود یک مقدار در لیست (list)، تاپل (tuple)، دیکشنری (dictionary)، مجموعه (set) و حتی رشتهها (string) استفاده میشوند. این عملگرها به شما کمک میکنند که بدون نیاز به حلقه یا شرطهای پیچیده، خیلی سریع بررسی کنید که یک مقدار خاص در مجموعهای از دادهها وجود دارد یا نه.
نحوه کار Membership Operators
این عملگرها مقدار موردنظر را میگیرند و بررسی میکنند که آیا در مجموعه مشخصشده حضور دارد یا خیر.
ساختار کلی آنها بهصورت زیر است:
مقدار in مجموعه → اگر مقدار وجود داشته باشد، خروجی `True` خواهد بود.
مقدار not in مجموعه → اگر مقدار وجود نداشته باشد، خروجی `True` خواهد بود.
مثالهایی از Membership Operators در انواع دادهها
📌 بررسی در لیست (List)
numbers = [1, 2, 3, 4, 5]
print(3 in numbers) # خروجی: True
print(10 not in numbers) # خروجی: True
مقدار ۳ در لیست numbers وجود دارد، پس in مقدار True برمیگرداند.
مقدار ۱۰ در لیست وجود ندارد، پس not in مقدار True برمیگرداند.
📌 بررسی در رشته (String)
text = "Python is awesome"
print("Python" in text) # خروجی: True
print("java" not in text) # خروجی: True
<p><span style="color: #0d0d0d;">
بررسی میشود که آیا رشته “Python” در متن وجود دارد یا نه.
مقدار “java” در متن نیست، پس not in مقدار True را برمیگرداند.
📌 بررسی در دیکشنری (Dictionary)
user_info = {"name": "Ali", "age": 25}
print("name" in user_info) # خروجی: True (چون "name" یک کلید در دیکشنری است)
print("Ali" in user_info) # خروجی: False (چون مقدار بررسی نمیشود، فقط کلیدها بررسی میشوند)
در دیکشنریها، عملگر in فقط کلیدها (keys) را بررسی میکند، نه مقدارها (values).
📌 بررسی در مجموعه (Set)
fruits = {"apple", "banana", "cherry"}
print("banana" in fruits) # خروجی: True
print("grape" not in fruits) # خروجی: True
مجموعهها (sets) برای بررسی عضویت بسیار سریعتر از لیستها هستند، زیرا از ساختار هش (hashing) استفاده میکنند.
انواع Membership Operators در Python
در پایتون، Membership Operators (عملگرهای عضویت) دو نوع دارند:
- عملگر in در Python → بررسی میکند که آیا مقدار موردنظر در مجموعه وجود دارد یا نه.
- عملگر not in در Python → بررسی میکند که مقدار موردنظر در مجموعه وجود ندارد.
این دو عملگر در انواع دادههای پایتون مانند لیست (list)، رشته (string)، دیکشنری (dictionary) و مجموعه (set) استفاده میشوند. در ادامه به بررسی دقیقتر هرکدام میپردازیم.
عملگر in در Python – بررسی وجود مقدار در مجموعهها
عملگر in برای بررسی اینکه آیا یک مقدار داخل مجموعهای از دادهها (list, tuple, set, string, dictionary) قرار دارد یا نه، استفاده میشود.
اگر مقدار در مجموعه باشد، True برمیگرداند، در غیر این صورت False.
مثال استفاده از in در لیست (List)
numbers = [10, 20, 30, 40, 50]
if 30 in numbers:
print("عدد ۳۰ در لیست وجود دارد.")
مقدار ۳۰ در لیست وجود دارد، پس خروجی نمایش داده میشود.
مثال استفاده از in در رشته (String Membership Check)
text = "Python Programming"
if "Python" in text:
print("متن شامل کلمه 'Python' است.")
✔️ رشته “Python” در متغیر text قرار دارد، پس مقدار True برمیگرداند.
مثال استفاده از in در دیکشنری (Dictionary Keys Membership Check)
user = {"username": "ali", "age": 25}
if "username" in user:
print("کلید 'username' در دیکشنری وجود دارد.")
نکته مهم: در دیکشنریها (dictionary)، عملگر in فقط کلیدها (keys) را بررسی میکند، نه مقدارها (values).
عملگر not in در Python – بررسی عدم وجود مقدار
عملگر not in دقیقاً برعکس in کار میکند و بررسی میکند که آیا یک مقدار در مجموعه وجود ندارد.
اگر مقدار در مجموعه نباشد، مقدار True برمیگرداند، در غیر این صورت False.
مثال استفاده از not in در لیست (List Membership Check)
users = ["Ali", "Reza", "Sara"]
if "Mehdi" not in users:
print("کاربر 'Mehdi' ثبتنام نکرده است.")
چون “Mehdi” در لیست users وجود ندارد، شرط True میشود و پیام نمایش داده میشود.
مثال استفاده از not in در رشته (String Membership Check)
text = "Learning Python is fun!"
if "Java" not in text:
print("رشته شامل 'Java' نیست.")
مقدار “Java” در text وجود ندارد، پس خروجی نمایش داده میشود.
مثال استفاده از not in در مجموعه (Set Membership Check)
fruits = {"apple", "banana", "cherry"}
if "grape" not in fruits:
print("انگور در لیست میوهها نیست.")
“grape” در مجموعه fruits وجود ندارد، بنابراین شرط برقرار است.
کاربرد Membership Operators در برنامهنویسی پایتون
Membership Operators (in و not in) در Python یکی از سادهترین و درعینحال پرکاربردترین ابزارها برای بررسی دادهها هستند. این عملگرها در بسیاری از سناریوهای روزمره برنامهنویسی استفاده میشوند. در ادامه چند مورد از کاربردهای مهم آنها را بررسی میکنیم.
بررسی ورود و ثبتنام کاربران (User Authentication Check)
در وبسایتها و اپلیکیشنها، معمولاً نیاز است بررسی کنیم که آیا یک کاربر در سیستم ثبت شده است یا نه.
مثال بررسی نام کاربر در لیست کاربران ثبتشده
registered_users = ["Ali", "Reza", "Sara"]
username = input("نام کاربری خود را وارد کنید: ")
if username in registered_users:
print("خوش آمدید،", username)
else:
print("کاربر یافت نشد! لطفاً ثبتنام کنید.")
اگر کاربر نام خود را وارد کند و در لیست کاربران ثبتشده باشد، اجازه ورود داده میشود.
در غیر این صورت، پیام “لطفاً ثبتنام کنید” نمایش داده میشود.
فیلتر کردن دادهها (Filtering Data with in and not in)
اگر بخواهید لیستی از دادهها را بر اساس مقادیر مجاز یا غیرمجاز فیلتر کنید، این عملگرها کمک بزرگی خواهند کرد.
مثال فیلتر کردن ایمیلهای مجاز
allowed_domains = ["gmail.com", "yahoo.com", "outlook.com"]
email = "user@example.com"
if email.split("@")[1] not in allowed_domains:
print("این دامنه ایمیل مجاز نیست!")
else:
print("ایمیل تأیید شد.")
بررسی میکند که آیا دامنه ایمیل در لیست دامنههای مجاز قرار دارد یا خیر.
در صورت نامعتبر بودن، پیام هشدار داده میشود.
بررسی حروف خاص در رشتهها (String Character Check)
گاهی لازم است بررسی کنیم که آیا یک حرف خاص در یک کلمه یا جمله وجود دارد یا خیر.
مثال چک کردن وجود عدد در رمز عبور
password = "SecurePass"
if any(char in "0123456789" for char in password):
print("رمز عبور معتبر است.")
else:
print("رمز عبور باید حداقل شامل یک عدد باشد!")
بررسی میشود که آیا رمز عبور شامل حداقل یک عدد هست یا نه.
جلوگیری از ورود دادههای تکراری (Avoiding Duplicates in Lists and Sets)
با استفاده از عملگر in میتوانیم قبل از اضافه کردن داده به لیست، بررسی کنیم که آیا قبلاً وجود دارد یا نه.
مثال ثبت نام کاربران بدون داده تکراری
users = {"Ali", "Sara", "Reza"}
new_user = "Sara"
if new_user in users:
print("این نام کاربری قبلاً انتخاب شده است!")
else:
users.add(new_user)
print("ثبتنام انجام شد.")
اگر نام کاربری قبلاً در مجموعه وجود داشته باشد، پیام خطا نمایش داده میشود.
در غیر این صورت، کاربر جدید به مجموعه اضافه میشود.
بررسی کلیدهای موجود در دیکشنری (Dictionary Key Lookup)
دیکشنریها (Dictionaries) معمولاً برای ذخیره دادهها بهصورت کلید و مقدار (Key-Value) استفاده میشوند. با عملگر in، بررسی میکنیم که آیا یک کلید در دیکشنری وجود دارد یا نه.
مثال ثبت نام کاربران بدون داده تکراری
students = {"Ali": 18, "Sara": 20, "Reza": 19}
name = "Reza"
if name in students:
print(f"{name} در سیستم ثبت شده و سن او {students[name]} سال است.")
else:
print("دانشجو یافت نشد!")
بررسی میشود که آیا نام دانشجو در دیکشنری students وجود دارد یا نه.
بررسی مجوزهای دسترسی (Access Control with Membership Operators)
در برنامههایی که دارای سطوح دسترسی مختلف هستند، از in و not in برای کنترل مجوز کاربران استفاده میشود.
مثال بررسی نقش کاربر در سیستم
admin_users = ["admin", "manager", "superuser"]
user_role = "editor"
if user_role in admin_users:
print("دسترسی ادمین دارید.")
else:
print("شما مجاز به انجام این عملیات نیستید!")
اگر نقش کاربر در لیست ادمینها باشد، مجوز دسترسی داده میشود.
Examples: پیادهسازی عملی Membership Operators در Python
برای درک بهتر Membership Operators (in و not in)، در این بخش چندین مثال کاربردی ارائه میدهیم. این مثالها به شما کمک میکنند تا استفاده از این عملگرها را در سناریوهای مختلف یاد بگیرید.
بررسی عضویت در لیست (Checking Membership in Lists)
مثال: بررسی اینکه آیا یک نام در لیست وجود دارد یا نه
names = ["Ali", "Reza", "Sara", "Mehdi"]
if "Sara" in names:
print("Sara در لیست وجود دارد.")
if "Hasan" not in names:
print("Hasan در لیست وجود ندارد.")
“Sara” در لیست وجود دارد، پس in مقدار True را برمیگرداند.
“Hasan” در لیست نیست، پس not in مقدار True را برمیگرداند.
بررسی کاراکتر در رشته (Checking Character in String)
مثال: چک کردن اینکه آیا رشته شامل یک کلمه خاص هست یا نه
sentence = "Learning Python is fun!"
if "Python" in sentence:
print("این جمله شامل کلمه 'Python' است.")
if "Java" not in sentence:
print("کلمه 'Java' در این جمله وجود ندارد.")
چون “Python” در متن وجود دارد، True برمیگرداند.
چون “Java” در متن نیست، not in مقدار True را برمیگرداند.
بررسی مقدار در مجموعه (Set Membership Check)
مثال: بررسی عضویت در مجموعه (Set)
fruits = {"apple", "banana", "cherry"}
if "banana" in fruits:
print("موز در لیست میوهها وجود دارد.")
if "grape" not in fruits:
print("انگور در لیست میوهها نیست.")
مجموعهها (sets) سریعتر از لیستها عمل میکنند، زیرا از ساختار هش (hashing) استفاده میکنند.
بررسی کلید در دیکشنری (Dictionary Key Membership Check)
مثال: چک کردن اینکه آیا یک کلید در دیکشنری وجود دارد یا نه
user_info = {"name": "Ali", "age": 25, "city": "Tehran"}
if "age" in user_info:
print(f"سن کاربر: {user_info['age']}")
if "email" not in user_info:
print("کاربر ایمیلی ثبت نکرده است.")
بررسی میشود که آیا کلید “age” در دیکشنری وجود دارد یا نه.
چون “email” در دیکشنری وجود ندارد، پیام مناسب نمایش داده میشود.
بررسی عضویت در لیست مجاز (Checking Allowed Items in a List)
مثال: بررسی ورود ایمیل در لیست مجاز
allowed_domains = ["gmail.com", "yahoo.com", "outlook.com"]
email = "user@example.com"
if email.split("@")[1] in allowed_domains:
print("ایمیل معتبر است.")
else:
print("این دامنه ایمیل مجاز نیست!")
بررسی میکند که آیا دامنه ایمیل در لیست دامنههای مجاز قرار دارد یا خیر.
بررسی مجوز دسترسی کاربر (User Access Control Check)
مثال: بررسی اینکه آیا کاربر ادمین است یا نه
admins = ["admin", "manager", "superuser"]
user_role = "editor"
if user_role in admins:
print("شما دسترسی ادمین دارید.")
else:
print("شما مجاز به انجام این عملیات نیستید!")
بررسی میشود که آیا نقش کاربر در لیست ادمینها وجود دارد یا نه.
سوالات متداول Membership Operators در Python
- عملگرهای in و not in در پایتون چه کاری انجام میدهند؟
این عملگرها بررسی میکنند که آیا یک مقدار در یک مجموعه داده (لیست، رشته، دیکشنری، مجموعه) وجود دارد (in) یا وجود ندارد (not in). - آیا in و not in فقط برای لیستها استفاده میشوند؟ ️
خیر، این عملگرها را میتوان در لیست (List)، رشته (String)، دیکشنری (Dictionary) و مجموعه (Set) استفاده کرد. - آیا in در دیکشنریها مقدار (Value) را بررسی میکند؟️
خیر، عملگر in فقط کلیدها (Keys) را بررسی میکند، نه مقادیر داخل دیکشنری. - آیا عملگر in در مقایسه با حلقههای for سریعتر است؟ ️
بله، مخصوصاً در مجموعهها (Sets) و دیکشنریها (Dictionaries)، زیرا این ساختارهای دادهای از هشینگ (Hashing) استفاده میکنند که بررسی را بسیار سریعتر از حلقهها انجام میدهد. - ۵آیا in هنگام بررسی رشتهها (String) به بزرگی و کوچکی حروف حساس است؟
️ بله، عملگر in به حروف بزرگ و کوچک حساس است، یعنی “Python” in “python programming” مقدار False را برمیگرداند.
جمع بندی
عملگرهای عضویت (in
و not in
) در پایتون ابزارهای قدرتمندی برای بررسی وجود یا عدم وجود مقادیر در انواع دادهها مانند لیست، رشته، دیکشنری و مجموعه هستند. این عملگرها به سادگی و بدون نیاز به حلقههای پیچیده، امکان جستجو در دادهها را فراهم میکنند. از کاربردهای مهم آنها میتوان به احراز هویت کاربران، فیلتر کردن دادهها، بررسی سطح دسترسی و جلوگیری از ورود دادههای تکراری اشاره کرد. با درک صحیح این عملگرها، میتوان کدهای خواناتر و بهینهتری در پایتون نوشت.