مجموعه ها در برنامه نویسی پایتون

4 سال پیش

مجموعه ها در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، همه چیز را در مورد مجموعه ها در برنامه نویسی پایتون (Python Sets) خواهید آموخت. نحوه ایجاد آنها، افزودن یا حذف عناصر از آنها، و همه عملیات انجام شده روی مجموعه ها در پایتون را یاد خواهید گرفت.

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

مجموعه (set) مجموعه ای غیر مرتب از عناصر است. هر عنصر مجموعه ای منحصر به فرد است (بدون کپی) و  تغییرناپذیر می باشد.

با این حال، مجموعه خود قابل تغییر است. ما می توانیم مواردی را از آن اضافه یا حذف کنیم.

مجموعه ها همچنین می توانند برای انجام عملیات های ریاضی مانند اتحاد، اشتراک، تفاضل متقارن و غیره استفاده شوند.

 

ایجاد مجموعه ها در برنامه نویسی پایتون

یک مجموعه با قرار دادن همه موارد (عناصر) در داخل آکولاد {} ساخته می شود و با کاما عناصر از یکدیگر جدا شده یا با استفاده از تابع توکار ()set ایجاد می شود.

یک مجموعه می تواند هر تعداد آیتم داشته باشد و ممکن است انواع مختلفی داشته باشد (عدد صحیح ، ممیز شناور ، تاپل ، رشته و غیره). اما یک مجموعه نمی تواند عناصر قابل تغییر مانند لیست ها، مجموعه ها یا دیکشنری ها را به عنوان عناصر خود داشته باشد.

# Different types of sets in Python
# set of integers
my_set = {1, 2, 3}
print(my_set)

# set of mixed datatypes
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)

 

خروجی

{۱, ۲, ۳}
{۱٫۰, (۱, ۲, ۳), 'Hello'}

 

 

# set cannot have duplicates
# Output: {1, 2, 3, 4}
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)

# we can make set from a list
# Output: {1, 2, 3}
my_set = set([1, 2, 3, 2])
print(my_set)

# set cannot have mutable items
# here [3, 4] is a mutable list
# this will cause an error.

my_set = {1, 2, [3, 4]}

 

خروجی

{۱, ۲, ۳, ۴}
{۱, ۲, ۳}
Traceback (most recent call last):
  File "<string>", line 15, in <module>
    my_set = {1, 2, [3, 4]}
TypeError: unhashable type: 'list'

 

برای ایجاد یک مجموعه خالی باید حقه زیر را به کار برد.

آکولاد {} یک دیکشنری خالی در پایتون ایجاد می کند. برای ساخت یک مجموعه بدون هیچ عنصری، از تابع ()set بدون هیچ آرگومانی استفاده می کنیم.

# Distinguish set and dictionary while creating empty set

# initialize a with {}
a = {}

# check data type of a
print(type(a))

# initialize a with set()
a = set()

# check data type of a
print(type(a))

 

خروجی

<class 'dict'>
<class 'set'>

 

اصلاح مجموعه ها در پایتون

مجموعه ها قابل تغییر هستند. با این حال از آنجا که آنها مرتب نیستند، اندیس گذاری معنایی ندارد.

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

با استفاده از روش ()add  چندین عنصر و با استفاده از روش () update می توانیم یک عنصر اضافه کنیم. روش () update می تواند تاپل ها، لیست ها، رشته ها یا مجموعه های دیگر را به عنوان آرگومان خود در نظر بگیرد. در همه موارد، از تکرار اجتناب می شود.

# initialize my_set
my_set = {1, 3}
print(my_set)

# if you uncomment line 9,
# you will get an error
# TypeError: 'set' object does not support indexing

# my_set[0]

# add an element
# Output: {1, 2, 3}
my_set.add(2)
print(my_set)

# add multiple elements
# Output: {1, 2, 3, 4}
my_set.update([2, 3, 4])
print(my_set)

# add list and set
# Output: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4, 5], {1, 6, 8})
print(my_set)

خروجی

{۱, ۳}
{۱, ۲, ۳}
{۱, ۲, ۳, ۴}
{۱, ۲, ۳, ۴, ۵, ۶, ۸}

 

حذف عناصر از یک مجموعه

با استفاده از روش های کنار ()discard و ()remove، می توان یک مورد خاص را از مجموعه حذف کرد.

تنها تفاوت این دو در این است که اگر عنصر در مجموعه وجود نداشته باشد، تابع ()discard یک مجموعه را بدون تغییر می گذارد. از طرف دیگر، تابع ()remove در چنین شرایطی خطا ایجاد می کند (اگر عنصر در مجموعه وجود نداشته باشد).

مثال زیر این را نشان می دهد.

# Difference between discard() and remove()

# initialize my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)

# discard an element
# Output: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)

# remove an element
# Output: {1, 3, 5}
my_set.remove(6)
print(my_set)

# discard an element
# not present in my_set
# Output: {1, 3, 5}
my_set.discard(2)
print(my_set)

# remove an element
# not present in my_set
# you will get an error.
# Output: KeyError

my_set.remove(2)

 

خروجی

{۱, ۳, ۴, ۵, ۶}
{۱, ۳, ۵, ۶}
{۱, ۳, ۵}
{۱, ۳, ۵}
Traceback (most recent call last):
  File "<string>", line 28, in <module>
KeyError: 2

 

به همین ترتیب، ما می توانیم با استفاده از متد ()pop موردی را حذف و برگردانیم.

از آنجا که مجموعه یک نوع داده مرتب نشده است، هیچ راهی برای تعیین اینکه کدام مورد ظاهر می شود وجود ندارد. کاملاً اختیاری عمل می کند.

همچنین می توانیم با استفاده از متد () clear همه موارد را از یک مجموعه یکجا حذف کنیم.

# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")
print(my_set)

# pop an element
# Output: random element
print(my_set.pop())

# pop another element
my_set.pop()
print(my_set)

# clear my_set
# Output: set()
my_set.clear()
print(my_set)

print(my_set)

 

خروجی

{'H', 'l', 'r', 'W', 'o', 'd', 'e'}
H
{'r', 'W', 'o', 'd', 'e'}
set()

 

عملیات ریاضی مجموعه عا در برنامه نویسی پایتون

از مجموعه ها می توان برای انجام عملیات ریاضی مانند اتحاد، اشتراک، تفاضل و تفاضل متقارن استفاده کرد. ما می توانیم این کار را با عملگرها یا روش ها انجام دهیم.

اجازه دهید دو مجموعه زیر را برای عملیات زیر در نظر بگیریم.

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

 

اتحاد مجموعه در پایتون

 

اتحاد A و B مجموعه ای از کلیه عناصر هر دو مجموعه است.

اتحاد با استفاده از عملگر | به دست می آید. با استفاده از متد ()union نیز می توان همین کار را انجام داد.

# Set union method
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)

 

خروجی

{۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸}

 

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

# use union function
>>> A.union(B)
{۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸}

# use union function on B
>>> B.union(A)
{۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸}

 

 

اشتراک مجموعه در پایتون

 

اشتراک A و B مجموعه ای از عناصر است که در هر دو مجموعه مشترک است.

اشتراک با استفاده از عملگر &  به دست می آید. با استفاده از متد ()intersection می توان همین کار را انجام داد.

# Intersection of sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use & operator
# Output: {4, 5}
print(A & B)

 

خروجی

{۴, ۵}

 

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

# use intersection function on A
>>> A.intersection(B)
{۴, ۵}

# use intersection function on B
>>> B.intersection(A)
{۴, ۵}

 

 

تفاضل مجموعه ها در پایتون 

تفاضل مجموعه B از مجموعه ( A(A – B  مجموعه ای از عناصر است که فقط در A است اما در B نیست. به همین ترتیب، B – A مجموعه ای از عناصر در B است اما در A نیست.

تفاضل با استفاده از عملگر – به دست می آید. یا می توان با استفاده از متد ()difference آن رابه دست آورد.

# Difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use - operator on A
# Output: {1, 2, 3}
print(A - B)

 

خروجی

{۱, ۲, ۳}

 

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

# use difference function on A
>>> A.difference(B)
{۱, ۲, ۳}

# use - operator on B
>>> B - A
{۸, ۶, ۷}

# use difference function on B
>>> B.difference(A)
{۸, ۶, ۷}

 

 

تفاضل متقارن مجموعه ها در پایتون

تفاضل متقارن A و B مجموعه ای از عناصر در A و B است اما نه در هر دو.

تفاضل متقارن با استفاده از عملگر ^ به دست می آید. با استفاده از متد ()symmetric_difference  می توان نتیجه مشابهی گرفت.

# Symmetric difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use ^ operator
# Output: {1, 2, 3, 6, 7, 8}
print(A ^ B)

 

خروجی

{۱, ۲, ۳, ۶, ۷, ۸}

 

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

# use symmetric_difference function on A
>>> A.symmetric_difference(B)
{۱, ۲, ۳, ۶, ۷, ۸}

# use symmetric_difference function on B
>>> B.symmetric_difference(A)
{۱, ۲, ۳, ۶, ۷, ۸}

 

سایر متد های مجموعه ها در برنامه نویسی پایتون

متدهای مجموعه زیادی وجود دارد که بعضی از آنها را قبلاً در بالا استفاده کردیم. در اینجا لیستی از تمام متدهایی مجموعه در دسترس هستند آورده شده است:

 

متد توضیح
()add عنصری را به مجموعه اضافه می کند
()clear همه عناصر را از مجموعه حذف می کند
()copy کپی از مجموعه را برمی گرداند
()difference تفاوت دو یا چند مجموعه را به عنوان یک مجموعه جدید برمی گرداند
()difference_update تمام عناصر مجموعه دیگری را از این مجموعه حذف می کند
()discard حذف یک عنصر از مجموعه به شرطی که عضو مجموعه باشد
()intersection اشتراک دو مجموعه را به عنوان یک مجموعه جدید برمی گرداند
()intersection_update مجموعه را با اشتراک خودش و دیگری به روز می کند
()isdisjoint اگر دو مجموعه اشتراک تهی داشته باشند True برمی گردد
()issubset اگر مجموعه دیگری حاوی این مجموعه باشد، Trueبرمی گردد
()issuperset اگر این مجموعه شامل مجموعه دیگری باشد، True برمی گردد
()pop یک عنصر مجموعه دلخواه را حذف و برمی گرداند. اگر مجموعه خالی باشد KeyError نشان می دهد
()remove یک عنصر را از مجموعه حذف می کند. اگر این عنصر عضو مجموعه نباشد، KeyError نشان می دهد
()symmetric_difference تفاضل متقارن دو مجموعه را به عنوان یک مجموعه جدید برمی گرداند
()symmetric_difference_update مجموعه ای را با اتفاضل متقارن خود و دیگری به روز می کند
()union اشتراک مجموعه ها را در یک مجموعه جدید برمی گرداند
()update مجموعه را با اشتراک خود و دیگری به روز می کند

 

سایرعملیات های مجموعه در پایتون
تست عضویت مجموعه

ما می توانیم با استفاده از کلیدواژه in آزمایش کنیم که آیا موردی در یک مجموعه وجود دارد یا نه.

# in keyword in a set
# initialize my_set
my_set = set("apple")

# check if 'a' is present
# Output: True
print('a' in my_set)

# check if 'p' is present
# Output: False
print('p' not in my_set)

 

خروجی

True
False

 

 

تکرار از طریق یک مجموعه

با استفاده از حلقه for می توانیم هر آیتم مورد نظر در یک مجموعه تکرار کنیم.

>>> for letter in set("apple"):
...     print(letter)
...    
a
p
e
l

 

 

توابع توکار با مجموعه ها در پایتون

توابع توکار مانند ()all()any()enumerate()len()max()min()sorted()sumو غیره معمولاً با مجموعه هایی برای انجام کارهای مختلف استفاده می شوند.

 

Function Description
()all اگر همه عناصر مجموعه درست باشد (یا اگر مجموعه خالی باشد) True را برمی گرداند.
()any اگر هر عنصری از مجموعه درست باشد، true را برمی گرداند. اگر مجموعه خالی باشد، False را برمی گرداند.
()enumerate یک شی شمارش شده را برمی گرداند. این شامل اندیس و مقدار برای همه موارد مجموعه به صورت جفت است.
()len طول (تعداد موارد) مجموعه را برمی گرداند.
()max بزرگترین مورد مجموعه را برمی گرداند.
()min کوچکترین مورد مجموعه را برمی گرداند.
()sorted لیست مرتب شده جدیدی را از عناصر موجود در مجموعه برمی گرداند
()sum جمع تمام عناصر موجود در مجموعه را برمی گرداند.

 

Frozenset

Frozenset کلاس جدیدی است که ویژگی های یک مجموعه را دارد، اما با تعیین عناصر آن نمی توان تغییر داد. در حالی که تاپل ها لیست های غیرقابل تغییر هستند، مجموعه های Frozenset مجموعه های غیرقابل تغییر هستند.

 

Frozensets را می توان با استفاده از تابع () frozenset ایجاد کرد.

این نوع داده از روشهایی مانند copy()difference()intersection()isdisjoint()issubset()issuperset()symmetric_difference() and union() پشتیبانی می کند.

# Frozensets
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

 

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

>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'

 

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
  26. رشته ها در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه