مجموعه

در ریاضیات، چیزی به نام مجموعه (یا نظریه مجموعه) وجود دارد. شاید حتی آنها را در یک دوره ریاضی مطالعه کرده باشید. حتی ممکن است با نمودارهای ون آشنا باشید.
در عمل، یک مجموعه را می توان به سادگی به عنوان مجموعه ای کاملاً تعریف شده از اشیاء منفرد در نظر گرفت که عناصر یا اعضا نامیده می شوند.
گروه بندی اشیا در یک مجموعه می تواند در برنامه نویسی مفید باشد و پایتون نوع داخلی set را در اختیار ما قرار می دهد.

مجموعه ها (نوع set) با سایر انواع اشیاء در عملیات منحصر به فردی که می توان روی آنها انجام داد متفاوت است.

نوع داخلی set در پایتون دارای ویژگی های زیر است:
  • عناصر یک مجموعه نامرتب هستند (به این معنی که اگر دو مجموعه دارای عناصر یکسانی باشند معادل هستند). عناصر مجموعه نه به صورت متوالی، بلکه بر اساس الگوریتم‌های خاصی ذخیره می‌شوند که به شما امکان می‌دهد به سرعت تعیین کنید که آیا یک عنصر به یک مجموعه تعلق دارد (بدون شمارش همه عناصر)؛
  • عناصر مجموعه منحصر به فرد هستند. عناصر تکراری مجاز نیستند؛
  • مجموعه ها قابل تغییر هستند (به عنوان مثال، می توانید یک عنصر را به یک مجموعه اضافه کنید)، اما خود عناصر داخل مجموعه باید تغییر ناپذیر باشند (اعداد، رشته ها، تاپل ها). شما نمی توانید یک لیست یا مجموعه دیگری را به عنوان عنصر یک مجموعه بسازید؛

 

 مجموعه
ایجاد کنید
1 راه

به سادگی عناصر موجود در مجموعه را در پرانتزهای فرفری شماری کنید.

x = {"مدرسه"، "معلم"، "کلاس"، دانش آموز
 

دوطرفه 
از تابع داخلی set() استفاده کنید. x = set()    # مجموعه خالی list_name = ["آندری"، "باب"، "کارولین"] y = set(list_name)    # می توانید چندین                        # از هر شی قابل تکرار z = set(["آندری"، "باب"، "کارولین"])     # {'باب'، 'کارولین'، 'آندری'} k = set(("آندری"، "باب"، "کارولین"))     # {'باب'، 'کارولین'، 'آندری'} s = "رشته s" m = مجموعه(ها)   و #39;s'، ' '} -                # توجه کنید!                # ترتیب عناصر می تواند هر کدام باشد،               # عنصر تکرار نمی شود n = {42, 'foo', 3.14159, None, (1, 2, 3)}    # عناصر در                                                # می تواند انواع مختلفی داشته باشد  
تنظیم خروجی
عناصر مجموعه به ترتیب دلخواه نمایش داده می شوند، نه لزوماً به ترتیبی که اضافه می شوند. z = set(["آندری"، "باب"، "کارولین"])  چاپ(z)     # {'باب'، 'کارولین'، 'آندری'} چاپ(*z)    # باب آندری کارولین

روش های کار با مجموعه ها


تعداد عناصر در مجموعه
متد len() تعداد عناصر مجموعه را برمی‌گرداند. k = {42, 'foo', 3.14159, None, (1, 2, 3)}  print(len(k))    #5

 

تعیین اگر یک عنصر در یک مجموعه باشد (عضویت در)
k = {42, 'foo', 3.14159, None, (1, 2, 3)}  چاپ (42 اینچ)    # درست است چاپ (2 اینچ)     # نادرست
اگرچه عناصر موجود در یک مجموعه باید از نوع تغییرناپذیر باشند، اما خود مجموعه ها را می توان تغییر داد. 

 

افزودن یک عنصر به ست
x.add(<elem>)
به مجموعه  x <elem> را اضافه می کند که باید تنها شیء تغییرناپذیر باشد.

 

حذف یک عنصر از مجموعه
1) x.remove(<elem>)
<elem>  از مجموعه x حذف می‌شود. اگر <elem> در x نباشد، پایتون یک استثنا (خطا) می‌اندازد.

2) x.discard(<elem>)
همان حذف می شود، اما در صورت عدم وجود عنصر در مجموعه، استثنایی ایجاد نمی کند.

3) x.pop()
یک عنصر تصادفی را از مجموعه حذف و برمی گرداند. اگر مجموعه در ابتدا خالی باشد، یک استثنا (خطا) رخ می دهد.

4) x.clear()
تمام عناصر را از مجموعه حذف می کند (مجموعه را پاک می کند).

مرتب‌سازی را تنظیم کنید؟

همانطور که می دانیم ترتیب عناصر در مجموعه در نظر گرفته نمی شود. پس آیا منطقی است در مورد مرتب سازی مجموعه ها در پایتون 3 صحبت کنیم؟! (به همین دلیل در عنوان یک علامت سوال وجود دارد)

برای یافتن سریع یک عنصر در یک مجموعه، مطلوب است که آنها را به صورت مرتب در حافظه ذخیره کنید.

بیایید به چند نمونه نگاه کنیم. چه اتفاقی برای عناصر انواع داده‌های مختلف در یک مجموعه می‌افتد؟ این عناصر نباید مرتب شوند. اگر عناصر را با استفاده از دستور print() چاپ کنیم، آنها به صورت زیر خروجی خواهند شد:

a = {0، 1، 12، 'b'، 'ab'، 3، 2، 'a'} print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} در این حالت مقادیر مرتب نشده نمایش داده می شوند. اگر راه اندازی را تکرار کنید، ترتیب خروجی ممکن است متفاوت باشد. اما این تنها در صورتی است که عناصر انواع مختلف با هم مخلوط شوند.

بیایید سعی کنیم داده های یک نوع را نمایش دهیم (مثلاً فقط اعداد): a = {0، 1، 12، 3، 2} چاپ (الف) # {0، 1، 2، 3، 12} همه عناصر به ترتیب نمایش داده می شوند. بیایید سعی کنیم آن را به یک لیست تبدیل کنیم: a = {0، 1، 12، 3، 2} b = لیست (a) چاپ (ب) # [0، 1، 2، 3، 12] به همین ترتیب، عناصر مرتب شده به ترتیب صعودی در لیست نوشته شدند.

به نظر می رسد که اگر عناصر از یک نوع باشند به شکل مرتب در حافظه ذخیره می شوند. اما بهتر است روی آن حساب نکنید، الگوریتم‌های پایتون می‌توانند تغییر کنند.

اگر نیاز به دریافت لیست مرتب شده از یک مجموعه دارید، بهتر است از مرتب استفاده کنید (< code>sorted) برای اطمینان از عملکرد ). عناصر دقیقا مرتب خواهند شد. کد شما برای دیگران قابل درک خواهد بود.