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

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

فهرست مطالب

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

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

 

ایجاد یک مجموعه

مجموعه‌ ها در پایتون می‌توانند با استفاده از تابع داخلی ()set با یک شیء قابل حلقه زنی (iterable) و یا با یک دنباله از اشیاء در حالی که در داخل آکولادهای باز و بسته ({ }) قرار دارند و با ‘ویرگول’ از هم جدا شده اند، ساخته شوند.

توجه: یک مجموعه نمی‌تواند عناصر قابل تغییری (mutable) مانند یک لیست یا دیکشنری داشته باشد، زیرا مجموعه قابل تغییر (mutable) است.

# Python program to demonstrate 
# Creation of Set in Python

# Creating a Set
set1 = set()
print("Initial blank Set: ")
print(set1)

# Creating a Set with 
# the use of a String
set1 = set("datayadforyou")
print("\nSet with the use of String: ")
print(set1)

# Creating a Set with
# the use of Constructor
# (Using object to Store String)
String = 'datayadforyou'
set1 = set(String)
print("\nSet with the use of an Object: " )
print(set1)

# Creating a Set with
# the use of a List
set1 = set(["datayad", "For", "you"])
print("\nSet with the use of List: ")
print(set1)

# Creating a Set with
# the use of a tuple
t=("datayad","for","you")
print("\nSet with the use of Tuple: ")
print(set(t))

# Creating a Set with
# the use of a dictionary
d={"datayad":1,"for":2,"you":3}
print("\nSet with the use of Dictionary: ")
print(set(d))

 خروجی:

Initial blank Set:
set()
Set with the use of String:
{'f', 'r', 'a', 'o', 'y', 'd', 't', 'u'}
Set with the use of an Object:
{'f', 'r', 'a', 'o', 'y', 'd', 't', 'u'}
Set with the use of List:
{'For', 'datayad'}
Set with the use of Tuple:
{'for', 'datayad'}
Set with the use of Dictionary:
{'for', 'datayad'}

 

پیچیدگی زمانی: O(n)، که n طول رشته ورودی، لیست، تاپل یا دیکشنری است.

فضای کمکی: O(n)، که n طول رشته ورودی، لیست، تاپل یا دیکشنری است، زیرا اندازه مجموعه ایجاد شده وابسته به اندازه ورودی است.

 

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

ترتیب عناصر در یک مجموعه تعریف نشده و تغییرناپذیر است. نوع عناصر در یک مجموعه نیازی به یکسان بودن ندارد و مقادیر مختلف از انواع داده مختلف نیز می‌توانند به مجموعه ارسال شوند.

# Creating a Set with 
# a List of Numbers
# (Having duplicate values)
set1 = set([1, 2, 4, 4, 3, 3, 3, 6, 5])
print("\nSet with the use of Numbers: ")
print(set1)

# Creating a Set with 
# a mixed type of values
# (Having numbers and strings)
set1 = set([1, 2, 'datayad', 4, 'For', 6, 'datayad'])
print("\nSet with the use of Mixed Values")
print(set1)

 خروجی:

Set with the use of Numbers:
{1, 2, 3, 4, 5, 6}
Set with the use of Mixed Values
{1, 2, 4, 6, 'For', 'datayad'}

 

 

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

# Another Method to create sets in Python3

# Set containing numbers
my_set = {1, 2, 3}

print(my_set)

 خروجی:

{1, 2, 3}

 

افزودن عناصر به یک مجموعه

استفاده از متد ()add

عناصر می‌توانند با استفاده از تابع داخلی add به مجموعه اضافه شوند. تنها یک عنصر در هر زمان می‌تواند با استفاده از متد add به مجموعه اضافه شود، اما با استفاده از این متد و از حلقه‌ها، می‌توان چندین عنصر را به یکباره به مجموعه اضافه کرد.

  بررسی دقیق لیست‌ها در پایتون

توجه: لیست‌ها به عنوان عناصر به یک مجموعه اضافه نمی‌شوند، زیرا لیست‌ها قابل هش کردن نیستند در حالی که تاپل‌ها به عنوان عناصر مجموعه قابل اضافه شدن هستند؛ چرا که تاپل‌ها تغییرناپذیر هستند و بنابراین قابل هش کردن هستند.

# Python program to demonstrate
# Addition of elements in a Set

# Creating a Set
set1 = set()
print("Initial blank Set: ")
print(set1)

# Adding element and tuple to the Set
set1.add(8)
set1.add(9)
set1.add((6, 7))
print("\nSet after Addition of Three elements: ")
print(set1)

# Adding elements to the Set
# using Iterator
for i in range(1, 6):
	set1.add(i)
print("\nSet after Addition of elements from 1-5: ")
print(set1)

 خروجی:

Initial blank Set: 
set()

Set after Addition of Three elements: 
{8, 9, (6, 7)}

Set after Addition of elements from 1-5: 
{1, 2, 3, (6, 7), 4, 5, 8, 9}

 

 

استفاده از متد ()update

برای اضافه کردن دو عنصر یا بیشتر، از متد update استفاده می‌شود. متد update لیست‌ها، رشته‌ها، تاپل‌ها، و همچنین مجموعه‌های دیگر را به عنوان ورودی‌های خود قبول می‌کند. در همه این موارد، جلوگیری از وجود عناصر تکراری صورت می‌گیرد.

# Python program to demonstrate
# Addition of elements in a Set

# Addition of elements to the Set
# using Update function
set1 = set([4, 5, (6, 7)])
set1.update([10, 11])
print("\nSet after Addition of elements using Update: ")
print(set1)

خروجی:

Set after Addition of elements using Update: 
{4, 5, (6, 7), 10, 11}

دسترسی به یک مجموعه

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

# Python program to demonstrate
# Accessing of elements in a set

# Creating a set
set1 = set(["datayad", "For", "you."])
print("\nInitial set")
print(set1)

# Accessing element using
# for loop
print("\nElements of set: ")
for i in set1:
	print(i, end=" ")

# Checking the element
# using in keyword
print("\n")
print("Geeks" in set1)

 خروجی:

Initial set
{'you.', 'For', 'datayad'}
Elements of set:
you. For datayad
False

 

 

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

استفاده از متد ()remove یا ()discard:

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

برای حذف عناصر از یک مجموعه بدون ایجاد KeyError، از ()discard استفاده کنید؛ اگر عنصر در مجموعه وجود نداشته باشد، مجموعه بدون تغییر باقی می‌ماند.

# Python program to demonstrate 
# Deletion of elements in a Set

# Creating a Set
set1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Initial Set: ")
print(set1)

# Removing elements from Set
# using Remove() method
set1.remove(5)
set1.remove(6)
print("\nSet after Removal of two elements: ")
print(set1)

# Removing elements from Set
# using Discard() method
set1.discard(8)
set1.discard(9)
print("\nSet after Discarding two elements: ")
print(set1)

# Removing elements from Set
# using iterator method
for i in range(1, 5):
	set1.remove(i)
print("\nSet after Removing a range of elements: ")
print(set1)

 خروجی:

Initial Set: 
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Set after Removal of two elements: 
{1, 2, 3, 4, 7, 8, 9, 10, 11, 12}

Set after Discarding two elements: 
{1, 2, 3, 4, 7, 10, 11, 12}

Set after Removing a range of elements: 
{7, 10, 11, 12}

 

 

استفاده از متد ()pop

تابع ()pop همچنین می‌تواند برای حذف و بازگرداندن یک عنصر از مجموعه استفاده شود، اما تنها آخرین عنصر مجموعه را حذف می‌کند.

  گرفتن ورودی در پایتون و انواع حالات آن

توجه: اگر مجموعه نامرتب باشد، هیچ راهی برای تعیین اینکه کدام عنصر با استفاده از تابع ()pop حذف می‌شود وجود ندارد.

# Python program to demonstrate
# Deletion of elements in a Set

# Creating a Set
set1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Initial Set: ")
print(set1)

# Removing element from the
# Set using the pop() method
set1.pop()
print("\nSet after popping an element: ")
print(set1)

 خروجی:

Initial Set: 
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Set after popping an element: 
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

 

 

استفاده از متد ()clear

برای حذف همه عناصر از مجموعه، از تابع ()clear استفاده می‌شود.

#Creating a set
set1 = set([1,2,3,4,5])
print("\n Initial set: ")
print(set1)


# Removing all the elements from 
# Set using clear() method
set1.clear()
print("\nSet after clearing all the elements: ")
print(set1)

 خروجی:

 Initial set: 
{1, 2, 3, 4, 5}

Set after clearing all the elements: 
set()

 

مجموعه‌های یخ‌زده (frozen sets)

در پایتون اشیاء غیرقابل تغییری هستند که تنها از متدها و عملگرهایی پشتیبانی می‌کنند که نتیجه آنها بدون تغییر مجموعه یخ زده یا مجموعه‌هایی که بر روی آنها اعمال می‌شوند، تولید می‌شود.

در حالی که عناصر یک مجموعه می‌توانند در هر زمان تغییر داده شوند، عناصر مجموعه یخ‌زده پس از ایجاد، تغییر نمی‌کنند.

اگر هیچ پارامتری برای این تابع ارسال نشود، یک frozenset خالی برمی‌گرداند.

# Python program to demonstrate
# working of a FrozenSet

# Creating a Set
String = ('d', 'a', 't', 'a', 'y', 'a', 'd', 'f', 'o', 'r')

Fset1 = frozenset(String)
print("The FrozenSet is: ")
print(Fset1)

# To print Empty Frozen Set
# No parameter is passed
print("\nEmpty FrozenSet: ")
print(frozenset())

 خروجی:

The FrozenSet is:
frozenset({'o', 'a', 'f', 'y', 'r', 't', 'd'})
Empty FrozenSet:
frozenset()

 

تبدیل نوع اشیاء به مجموعه‌ها

# Typecasting Objects in Python3 into sets

# Typecasting list into set
my_list = [1, 2, 3, 3, 4, 5, 5, 6, 2]
my_set = set(my_list)
print("my_list as a set: ", my_set)

# Typecasting string into set
my_str = "datayadforyou"
my_set1 = set(my_str)
print("my_str as a set: ", my_set1)

# Typecasting dictionary into set
my_dict = {1: "One", 2: "Two", 3: "Three"}
my_set2 = set(my_dict)
print("my_dict as a set: ", my_set2)

 خروجی:

my_list as a set:  {1, 2, 3, 4, 5, 6}
my_str as a set:  {'f', 'o', 'a', 'r', 'y', 'd', 't', 'u'}
my_dict as a set:  {1, 2, 3}

 

مثال: اجرای تمام توابع

def create_set():
	my_set = {1, 2, 3, 4, 5}
	print(my_set)

def add_element():
	my_set = {1, 2, 3, 4, 5}
	my_set.add(6)
	print(my_set)

def remove_element():
	my_set = {1, 2, 3, 4, 5}
	my_set.remove(3)
	print(my_set)

def clear_set():
	my_set = {1, 2, 3, 4, 5}
	my_set.clear()
	print(my_set)

def set_union():
	set1 = {1, 2, 3}
	set2 = {4, 5, 6}
	my_set = set1.union(set2)
	print(my_set)

def set_intersection():
	set1 = {1, 2, 3, 4, 5}
	set2 = {4, 5, 6, 7, 8}
	my_set = set1.intersection(set2)
	print(my_set)

def set_difference():
	set1 = {1, 2, 3, 4, 5}
	set2 = {4, 5, 6, 7, 8}
	my_set = set1.difference(set2)
	print(my_set)

def set_symmetric_difference():
	set1 = {1, 2, 3, 4, 5}
	set2 = {4, 5, 6, 7, 8}
	my_set = set1.symmetric_difference(set2)
	print(my_set)

def set_subset():
	set1 = {1, 2, 3, 4, 5}
	set2 = {2, 3, 4}
	subset = set2.issubset(set1)
	print(subset)

def set_superset():
	set1 = {1, 2, 3, 4, 5}
	set2 = {2, 3, 4}
	superset = set1.issuperset(set2)
	print(superset)

if __name__ == '__main__':
	create_set()
	add_element()
	remove_element()
	clear_set()
	set_union()
	set_intersection()
	set_difference()
	set_symmetric_difference()
	set_subset()
	set_superset()

 خروجی:

{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, 6}
{1, 2, 4, 5}
set()
{1, 2, 3, 4, 5, 6}
{4, 5}
{1, 2, 3}
{1, 2, 3, 6, 7, 8}
True
True

 

 

مزایای مجموعه‌ ها در پایتون (Set)

– عناصر منحصر به فرد: مجموعه‌ها تنها می‌توانند شامل عناصر منحصر به فرد باشند، بنابراین می‌توانند برای حذف تکرارها از یک مجموعه داده مفید باشند.

– تست سریع عضویت: مجموعه‌ها برای تست سریع عضویت بهینه‌سازی شده‌اند، بنابراین می‌توانند برای تعیین اینکه آیا یک مقدار در یک مجموعه است یا خیر، مفید باشند.

  بررسی دقیق آرایه ها در پایتون

– عملیات ریاضیاتی مجموعه: مجموعه‌ها عملیات ریاضیاتی مجموعه مانند اتحاد، اشتراک و تفاوت را پشتیبانی می‌کنند که می‌تواند برای کار با مجموعه‌های داده مفید باشد.

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

 

معایب مجموعه‌ ها در پایتون (Set)

– نامرتب: مجموعه‌ها نامرتب هستند، به این معنا که نمی‌توانید به ترتیب داده‌ها در مجموعه اعتماد کنید. این ممکن است باعث شود که دسترسی یا پردازش داده‌ها به ترتیب خاصی دشوار شود.

– کاربردهای محدودتر: مجموعه‌ها نسبت به لیست‌ها کم‌کاربردتر هستند، زیرا از متدهایی مانند append یا pop پشتیبانی نمی‌کنند. این می‌تواند باعث شود که تغییر یا دستکاری داده‌های ذخیره شده در یک مجموعه دشوارتر شود.

– مصرف حافظه: مجموعه‌ها ممکن است حافظه بیشتری را نسبت به لیست‌ها مصرف کنند، به ویژه برای مجموعه‌های داده کوچک. این به این دلیل است که هر عنصر در یک مجموعه به حافظه اضافی نیاز دارد تا یک مقدار هش را ذخیره کند.

– کم‌کاربردتر: مجموعه‌ها در پایتون کم‌کاربردتر از لیست‌ها و دیکشنری‌ها هستند، به این معنا که ممکن است منابع یا کتابخانه‌های کمتری برای کار با آنها موجود باشد. این ممکن است باعث شود که پیدا کردن راه‌حل‌ها برای مسائل یا گرفتن کمک در اشکال‌زدایی هنگام کار با آنها دشوارتر شود.

 

به طور کلی، مجموعه‌ ها در پایتون می‌توانند یک ساختار داده مفید در پایتون باشند، به ویژه برای حذف تکرارها یا برای تست سریع عضویت. با این حال عدم مرتب بودن و قابلیت‌های محدود آنها، می‌تواند باعث شود که آنها نسبت به لیست‌ها یا دیکشنری‌ها کمتر تطبیق پذیر باشند.

بنابراین هنگامی که قصد دارید ساختار داده‌ای خاص را در برنامه پایتون خود استفاده کنید، مهم است که با دقت مزایا و معایب استفاده از مجموعه‌ها را نیز در نظر بگیرید.

 

متدهای مجموعه

تابع

توضیحات

add()

یک عنصر به مجموعه اضافه می‌کند

remove()

یک عنصر را از مجموعه حذف می‌کند. اگر عنصر در مجموعه وجود نداشته باشد، یک خطا از نوع KeyError ایجاد می‌شود

clear()

تمام عناصر مجموعه را حذف می‌کند

copy()

یک کپی از مجموعه را برمی‌گرداند

pop()

یک عنصر تصادفی از مجموعه را حذف و برمی‌گرداند. اگر مجموعه خالی باشد، یک خطا از نوع KeyError ایجاد می‌شود

update()

مجموعه را با اتحاد خود و دیگر مجموعه‌ها به‌روز می‌کند

union()

اتحاد مجموعه‌ها را در یک مجموعه جدید برمی‌گرداند

difference()

اختلاف دو یا چند مجموعه را به‌عنوان یک مجموعه جدید برمی‌گرداند

difference_update()

تمام عناصر مجموعه دیگر را از این مجموعه حذف می‌کند

discard()

یک عنصر را از مجموعه حذف می‌کند. (اگر عنصر در مجموعه نباشد، هیچ عملی انجام نمی‌دهد)

intersection()

اشتراک دو مجموعه را به‌عنوان یک مجموعه جدید برمی‌گرداند

intersection_update()

مجموعه را با اشتراک خود و یک مجموعه دیگر به‌روز می‌کند

isdisjoint()

اگر دو مجموعه اشتراک نداشته باشند، True برمی‌گرداند

issubset()

اگر یک مجموعه، زیرمجموعه دیگری باشد، True برمی‌گرداند

issuperset()

اگر یک مجموعه شامل مجموعه دیگر باشد، True برمی‌گرداند (برعکس ()issubset)

symmetric_difference()

تفاوت همگن دو مجموعه را به‌عنوان یک مجموعه جدید برمی‌گرداند

symmetric_difference_update()

مجموعه را با تفاوت همگن خود و یک مجموعه دیگر به‌روز می‌کند

 

Rating 0.00 from 0 votes

لیست دروس دوره

آموزش پیشنهادی و مکمل

اگر سوالی در مورد این درس دارید، در کادر زیر بنویسید.

guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید

70% تخفیف دوره ریاضیات علم داده و ML

برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
×