نوع داده مجموعه در پایتون | به زبان ساده
در زبان برنامه نویسی پایتون (Python Programming Language)، شش «نوع داده» (Data Type) اصلی وجود دارد. این انواع داده، شامل «عدد» (Number)، «لیست» (List)، «تاپل» (Tuple)، «رشته» (String)، «دیکشنری» (Dictionary) و «مجموعه» (Set) میشوند. در این مطلب، نوع داده مجموعه در پایتون مورد بررسی قرار گرفته و به روش ساخت مجموعه، اضافه و حذف کردن عنصر از آن و همه عملیات انجام شده روی مجموعهها در پایتون پرداخته شده است.
نوع داده مجموعه در پایتون
مجموعه، اجتماعی مرتب نشده از عناصر است. در مجموعه، هر عنصر یکتا است (بدون تکرار) و باید غیرقابل تغییر (Immutable) باشد. اگرچه، خود مجموعه قابل تغییر است، یعنی میتوان عنصری را از آن حذف و یا به آن اضافه کرد.
از مجموعهها میتوان برای انجام عملیات ریاضی مجموعهها مانند اتحاد، اشتراک، تفاضل متقارن و دیگر موارد استفاده کرد.
روش ساخت مجموعه در پایتون
مجموعه با کنار هم قرار دادن همه عناصر درون آکولاد ساخته میشود. عناصر مجموعه به وسیله کاما یا تابع توکار ()set از هم جدا میشوند. مجموعهها میتوانند هر تعدادی عنصر داشته باشند.
همچنین، عناصر مجموعه میتوانند دارای انواع مختلفی (صحیح، ممیز شناور، تاپل، رشته) باشند. نوع داده مجموعه در پایتون، همانند لیست و دیکشنری، نمیتواند عنصر تغییرپذیر داشته باشند. در ادامه، مثالهایی از ساخت مجموعه در پایتون ارائه شده است.
1# set of integers
2my_set = {1, 2, 3}
3print(my_set)
4
5# set of mixed datatypes
6my_set = {1.0, "Hello", (1, 2, 3)}
7print(my_set)
در کد بالا، ابتدا یک مجموعه با عناصر ۱، ۲ و ۳ تعریف شده است. سپس، با استفاده از تابع ()print، مجموعه مذکور چاپ میشود.
{1, 2, 3}
با دستور {(my_set = {1.0, "Hello", (1, 2, 3، مجموعهای با سه نوع داده ممیز شناور، رشته و تاپل ساخته و سپس با تابع پرینت، خروجی آن چاپ شده است.
{1.0, 'Hello', (1, 2, 3)}
مثالهای زیر نیز قابل توجه هستند.
1# set do not have duplicates
2# Output: {1, 2, 3, 4}
3my_set = {1,2,3,4,3,2}
4print(my_set)
5
6# set cannot have mutable items
7# here [3, 4] is a mutable list
8# If you uncomment line #12,
9# this will cause an error.
10# TypeError: unhashable type: 'list'
11
12#my_set = {1, 2, [3, 4]}
13
14# we can make set from a list
15# Output: {1, 2, 3}
16my_set = set([1,2,3,2])
17print(my_set)
در قطعه کد بالا، ابتدا یک مجموعه به صورت {my_set = {1,2,3,4,3,2 تعریف میشود. ولی به دلیل آنکه مجموعهها نمیتوانند عنصر تکراری داشته باشند، خروجی دستور (print(my_set به صورت زیر خواهد بود.
{1, 2, 3, 4, 5, 6, 7, 8}
اشتراک مجموعه در پایتون
اشتراک A و B مجموعهای از عناصر است که در هر دو مجموعه مشترک هستند. اشتراک با استفاده از عملگر & انجام میشود. همچنین، میتوان از ()intersection برای اشتراک مجموعهها در پایتون استفاده کرد.
1# initialize A and B
2A = {1, 2, 3, 4, 5}
3B = {4, 5, 6, 7, 8}
4
5# use & operator
6# Output: {4, 5}
7print(A & B)
در کد بالا، ابتدا دو مجموعه A و B تعریف شدهاند. سپس، اشتراک این دو مجموعه با استفاده از تابع ()print چاپ شده است.
{4, 5}
نمونههای دیگری در ادامه آمدهاند.
1# use intersection function on A
2>>> A.intersection(B)
خروجی قطعه کد بالا به صورت زیر است.
{4, 5}
مثالی دیگر در همین رابطه، در ادامه آمده است.
# use intersection function on B B.intersection(A)
خروجی قطعه کد بالا به صورت زیر است.
{4, 5}
تفاضل مجموعه در پایتون
تفاضل A و B (یعنی A - B) مجموعهای از عناصر است که تنها در A هستند و در B وجود ندارند. به طور مشابه، B - A مجموعهای از عناصر در B است که در A حضور ندارند. تفاضل با استفاده از عملگر - انجام میشود. همچنین، میتوان از عملگر ()difference برای تفاضل مجموعهها استفاده کرد.
1# initialize A and B
2A = {1, 2, 3, 4, 5}
3B = {4, 5, 6, 7, 8}
4
5# use - operator on A
6# Output: {1, 2, 3}
7print(A - B)
در قطعه کد بالا، ابتدا دو مجموعه A و B تعریف شدهاند. سپس، تفاضل A از B با استفاده از دستور (print(A - B محاسبه و چاپ شده است.
1{1, 2, 3}
مثالهای دیگری در ادامه آمدهاند که میتوان آنها را در شل پایتون بررسی کرد.
# use difference function on A >>> A.difference(B) {1, 2, 3} # use - operator on B >>> B - A {8, 6, 7} # use difference function on B >>> B.difference(A) {8, 6, 7}
تفاضل متقارن مجموعهها
تفاضل متقارن A و B مجموعهای از عناصر در A و B به جز مواردی است که در هر دو مجموعه مشترک هستند. تفاضل متقارن با استفاده از عملگر ^ انجام میشود.
همچنین، میتوان از متد ()symmetric_difference برای تفاضل مجموعهها استفاده کرد.
1# initialize A and B
2A = {1, 2, 3, 4, 5}
3B = {4, 5, 6, 7, 8}
4
5# use ^ operator
6# Output: {1, 2, 3, 6, 7, 8}
7print(A ^ B)
در قطعه کد بالا، ابتدا دو مجموعه A و B تعریف شدهاند. سپس، تفاضل متقارن آنها با استفاده از عملگر ^ محاسبه و خروجی با تابع ()print چاپ شده است.
{1, 2, 3, 6, 7, 8}
در ادامه، مثالهای دیگری در همین رابطه آمده است که میتوان آنها را در شل پایتون آزمود.
# use symmetric_difference function on A >>> A.symmetric_difference(B) {1, 2, 3, 6, 7, 8} # use symmetric_difference function on B >>> B.symmetric_difference(A) {1, 2, 3, 6, 7, 8}
انواع متدها برای نوع داده مجموعه در پایتون
متدهای متعددی برای نوع داده مجموعه در پایتون وجود دارد که برخی از آنها در مثالهایی که پیشتر ارائه شدند، مورد استفاده قرار گرفتند. در ادامه، فهرستی از همه متدها موجود برای کار با شی مجموعه در پایتون، آورده شده است.
- ()add: یک عنصر را به مجموعه اضافه میکند.
- ()clear: همه عناصر را از مجموعه حذف میکند.
- ()copy: یک کپی از مجموعه را باز میگرداند.
- ()difference: تفاضل دو یا تعداد بیشتری مجموعه را به صورت یک مجموعه جدید باز میگرداند.
- ()difference_update: همه عناصر مجموعه دیگر را از این مجموعه حذف میکند.
- ()discard: یک عنصر را (که به عنوان آرگومان به متد داده شده) از آن حذف میکند. در صورتی که عنصر مذکور در مجموعه وجود نداشته باشد، کاری انجام نمیدهد.
- ()intersection: اشتراک دو مجموعه را به عنوان یک مجموعه جدید محاسبه میکند.
- ()intersection_update: مجموعه با اشتراک خودش و مجموعه دیگر به روز رسانی میشود.
- ()isdisjoint: اگر اشتراک دو مجموعه خالی باشد، مقدار True را باز میگرداند.
- ()issubset: اگر مجموعه، زیرمجموعه یک مجموعه دیگر باشد، مقدار True را باز میگرداند.
- ()issuperset: اگر مجموعه، شامل مجموعه دیگر باشد، مقدار True را باز میگرداند.
- ()pop: یک عنصر دلخواه را حذف میکند و مقدار آن را باز میگرداند.
- ()remove: یک عنصر را (که به عنوان آرگومان به متد داده شده) از مجموعه حذف میکند. اگر عنصر در مجموعه وجود نداشته باشد، منجر به وقوع خطای KeyError میشود.
- ()symmetric_difference: تفاضل متقارن دو مجموعه را به عنوان یک مجموعه جدید باز میگرداند.
- ()symmetric_difference_update: یک مجموعه را با تفاضل متقارن خودش و مجموعه دیگر به روز رسانی میکند.
- ()union: اتحاد مجموعهها را در یک مجموعه جدید باز میگرداند.
- ()update: مجموعه را با اتحاد خودش و دیگر موارد به روز رسانی میکند.
فروزنست در پایتون
«فروزنست» (Frozenset) یک کلاس جدید است که ویژگیهای یک مجموعه را دارد، اما عناصر آن پس از تخصیص پیدا کردن قابل تغییر نیستند. در حالی که تاپلها در واقع لیستهای غیر قابل تغییر هستند، فروزنستها، مجموعههای غیر قابل تغییر هستند. مجموعههای قابل تغییر غیر قابل هش (Hash) شدن هستند، بنابراین نمیتوان از آنها به عنوان کلیدهای دیکشنری استفاده کرد. از سوی دیگر، frozensetها قابل هش کردن هستند و میتوانند به عنوان کلیدهای دیکشنری مورد استفاده قرار بگیرند.
frozenset را میتوان با استفاده از تابع ()frozenset ساخت. این نوع داده از متدهایی مانند ()copy() ،difference() ،intersection() ،isdisjoint() ،issubset() ،issuperset() ،symmetric_difference و ()union پشتیبانی میکند. به دلیل غیر قابل تغییر بودن، متدهایی که عناصر را اضافه یا حذف میکنند برای این نوع داده وجود ندارند.
1# initialize A and B
2A = frozenset([1, 2, 3, 4])
3B = frozenset([3, 4, 5, 6])
در قطعه کد بالا، دو متغیر A و B از نوع frozenset تعریف شدهاند. مثالهای زیر را میتوان برای درک بهتر موضوع، در شل پایتون بررسی کرد.
1>>> A.isdisjoint(B)
2False
3>>> A.difference(B)
4frozenset({1, 2})
5>>> A | B
6frozenset({1, 2, 3, 4, 5, 6})
7>>> A.add(3)
8...
9AttributeError: 'frozenset' object has no attribute 'add'
فیلم آموزش پایتون مقدماتی
طول مدت این دوره آموزشی برابر با نوزده ساعت و پنجاه و سه دقیقه و مدرس آن مهندس پژمان اقبالی است. فیلم آموزش پایتون مقدماتی برای افراد تازهوارد به دنیای برنامهنویسی پایتون و کسانی که با پایتون تا حدی آشنا هستند و قصد دارند سطح دانش و مهارت خود را بیش از پیش ارتقا دهند مناسب است. در فیلم آموزش مقدماتی پایتون، ضمن معرفی و آموزش چگونگی نصب پایتون، مباحث ساختمان دادهها در پایتون، توابع و ماژولها، کلاس، خواندن و نوشتن فایلها و دیگر موارد مورد بررسی قرار میگیرند.
- برای دیدن فیلم آموزش پایتون مقدماتی + اینجا کلیک کنید.
آموزش کار با کتابخانه های NumPy و Matplotlib در پایتون
طول مدت این دوره آموزشی چهار ساعت و چهل و شش دقیقه و مدرس آن مهندس میترا تجربهکار است. در این دوره، مباحث پیشرفتهتر و در واقع تکمیلی آموزش برنامهنویسی پایتون مورد بررسی قرار گرفته است. بنابراین، این دوره برای افرادی مناسب است که فیلم آموزش مقدماتی پایتون را مشاهده کردهاند و یا، با مبانی پایتون آشنایی دارند. از جمله موضوعات مورد بررسی در فیلم آموزش پایتون تکمیلی میتوان به معرفی و تعریف آرایهها در زبان پایتون، معرفی بسته نامپای (NumPy)، رسم نمودار در پایتون و دیگر موارد اشاره کرد.
- برای دیدن فیلم آموزش پایتون تکمیلی + اینجا کلیک کنید.
فیلم آموزش پایتون با مثالهای عملی
طول مدت این دوره آموزشی سیزده ساعت و بیست دقیقه است. مدرس دوره آموزش پایتون فرادرس با مثالهای عملی، مهندس فرشید شیرافکن است. این فیلم آموزش پایتون برای افرادی مناسب است که در صدد یادگیری پایتون از پایه و به صورت عملی، همراه با بررسی مثالها و حل مسائل نمونه با استفاده از برنامهنویسی پایتون هستند. از جمله سرفصلهای این دوره میتوان به معرفی انواع دادهها در پایتون، عملگرها، دستورات شرطی، حلقهها، رشته، لیست، تاپل، دیکشنری، توابع، عبارات منظم و الگوریتمهای مرتبسازی اشاره کرد.
- برای دیدن فیلم آموزش پایتون فرادرس با مثالهای عملی + اینجا کلیک کنید.
فیلم آموزش پایتون با برنامهنویسی شیگرا
طول مدت این دوره آموزشی هفت ساعت و بیست و نه دقیقه و مدرس آن، مهندس فرشید شیرافکن است. این دوره برای افرادی که با زبان برنامهنویسی پایتون آشنایی دارند و در صدد یادگیری شیگرایی در این زبان هستند، مناسب است. در این دوره آموزشی، مباحث گوناگون پیرامون شیگرایی شامل شی، کلاس، شیگرایی، ارثبری، پلیمورفیسم و سربارگذاری عملگرها مورد بررسی قرار گرفته است.
- برای دیدن فیلم آموزش پایتون با برنامهنویسی شیگرا + اینجا کلیک کنید.
واقعا خیلی جامع توضیح میدید ممنون از شما