وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

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

0 8
زمان لازم برای مطالعه: 9 دقیقه


معرفی

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

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

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

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

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

توجه داشته باشید: مجموعه ای قبول نمی کند قابل تغییر عناصری مانند فهرست ها و لغت نامه ها.

ما می توانیم با عبور دادن تمام عناصر مجموعه در داخل یک مجموعه ایجاد کنیم آکولاد {} و عناصر را با استفاده از کاما جدا کنید (,):

num_set = {1, 2, 3, 4, 5, 6}
print(num_set)

این منجر به:

{1, 2, 3, 4, 5, 6}

ما فقط مجموعه ای از اعداد را ایجاد کردیم. ما همچنین می توانیم مجموعه ای از مقادیر رشته ایجاد کنیم:

string_set = {"Nicholas", "Michelle", "John", "Mercy"}
print(string_set)

منجر به:

{'Michelle', 'Nicholas', 'John', 'Mercy'}

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

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

mixed_set = {2.0, "Nicholas", (1, 2, 3)}
print(mixed_set)

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

{2.0, 'Nicholas', (1, 2, 3)}

تمامی عناصر مجموعه فوق به انواع مختلفی تعلق دارند. ما همچنین میتوانیم یک مجموعه از یک لیست ایجاد کنید. این کار را می توان با فراخوانی داخلی پایتون انجام داد set() روش:

num_set = set((1, 2, 3, 4, 5, 6))
print(num_set)

این منجر به:

{1, 2, 3, 4, 5, 6}

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

num_set = set((1, 2, 3, 1, 2))
print(num_set)

مجموعه فقط مقادیر منحصر به فرد را از لیست ذخیره می کند:

{1, 2, 3}

این مجموعه اساساً موارد تکراری را حذف کرده و از هر مورد تکراری فقط یکی را برگردانده است. این همچنین زمانی اتفاق می افتد که ما یک مجموعه را از ابتدا ایجاد می کنیم:

num_set = {1, 2, 3, 1, 2}
print(num_set)

دوباره، مجموعه موارد تکراری را حذف کرده و تنها یکی از موارد تکراری را برگردانده است:

{1, 2, 3}

اگر می خواهید یک مجموعه خالی ایجاد کنید و از بریس های مجعد خالی استفاده کنید ({})، به جای یک مجموعه خالی، یک فرهنگ لغت خالی ایجاد خواهید کرد:

x = {}
print(type(x)) 

برای ایجاد یک مجموعه خالی در پایتون به سادگی فراخوانی می کنیم روی را set() متد بدون ارسال هیچ مقدار:

x = set()
print(type(x)) 

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

پایتون راهی برای دسترسی به یک آیتم مجموعه فردی با استفاده از نماد اشتراک در اختیار ما قرار نمی دهد (set(index)). با این حال، می توانیم از a استفاده کنیم for حلقه برای تکرار در تمام آیتم های یک مجموعه:

months = set(("Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

for m in months:
    print(m)

این اراده print هر عنصر در الف months تنظیم:

March
Feb
Dec
Jan
May
Nov
Oct
Apr
June
Aug
Sep
July

ما همچنین می توانیم برای بررسی وجود یک عنصر در یک مجموعه با استفاده از in کلمه کلیدی:

months = set(("Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

print("May" in months)

از آنجا که May وجود دارد در months تنظیم کنید، این برمی گردد True:

True

به طور مشابه، جستجو برای عنصری که در مجموعه وجود ندارد، برمی گردد False:

months = set(("Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

print("Nicholas" in months)

این منجر به:

False

روش اضافه کردن آیتم ها به مجموعه پایتون

پایتون به ما این امکان را می دهد که با استفاده از اقلام جدید به یک مجموعه اضافه کنیم add() روش:

months = set(("Jan", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

months.add("Feb")
print(months)

مورد Feb با موفقیت به مجموعه اضافه می شود:

{'Oct', 'Dec', 'Feb', 'July', 'May', 'Jan', 'June', 'March', 'Sep', 'Aug', 'Nov', 'Apr'}

اگر مجموعه‌ای از اعداد بود، عنصر جدید را همانطور که برای یک رشته باید انجام می‌دادیم در داخل نقل قول نمی‌دادیم:

num_set = {1, 2, 3}
num_set.add(4)
print(num_set)

که اضافه خواهد شد 4 به num_set:

{1, 2, 3, 4}

در بخش بعدی، روش حذف عناصر از مجموعه ها را مورد بحث قرار خواهیم داد.

پیشنهاد می‌کنیم بخوانید:  متاکلاس های پایتون و فرابرنامه نویسی

روش حذف آیتم ها از مجموعه پایتون

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

توجه داشته باشید: به خاطر داشته باشید که discard() اگر آیتم در مجموعه پیدا نشود، متد خطایی ایجاد نمی کند. با این حال، اگر remove() روش استفاده می شود و مورد پیدا نمی شود، خطا ایجاد می شود.

دور انداختن()

بیایید روش حذف یک عنصر را با استفاده از discard() روش:

num_set = {1, 2, 3, 4, 5, 6}
num_set.discard(3)
print(num_set)

عنصر 3 از مجموعه حذف خواهد شد:

{1, 2, 4, 5, 6}

برداشتن()

به طور مشابه، remove() روش می توان به صورت زیر استفاده کرد:

num_set = {1, 2, 3, 4, 5, 6}
num_set.remove(3)
print(num_set)

این همان نتیجه را به همراه خواهد داشت:

{1, 2, 4, 5, 6}

حذف عناصر غیر موجود؟

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

num_set = {1, 2, 3, 4, 5, 6}
num_set.discard(7)
print(num_set)

اجرای کد بالا به هیچ وجه روی مجموعه تأثیر نمی گذارد:

{1, 2, 3, 4, 5, 6}

حالا بیایید ببینیم وقتی از آن استفاده می کنیم چه اتفاقی می افتد remove() روش در همان سناریو:

num_set = {1, 2, 3, 4, 5, 6}
num_set.remove(7)
print(num_set)

در این حالت ، تلاش برای حذف یک عنصر غیر موجود ، خطایی را ایجاد می کند:

Traceback (most recent call last):
  File "C:\Users\admin\sets.py", line 2, in <module>
    num_set.remove(7)
KeyError: 7

ترکیدن()

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

num_set = {1, 2, 3, 4, 5, 6}
print(num_set.pop())

این عنصر حذف شده را از مجموعه باز می گرداند:

1

شما می توانید از همان روش برای حذف یک عنصر و بازگشت عناصر باقی مانده در مجموعه استفاده کنید:

num_set = {1, 2, 3, 4, 5, 6}
num_set.pop()
print(num_set)

کدام خواهد شد print عناصر باقی مانده در مجموعه را حذف کنید:

{2, 3, 4, 5, 6}

واضح ()

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

num_set = {1, 2, 3, 4, 5, 6}
num_set.clear()
print(num_set)

خروجی خالی است set() بدون هیچ عنصری در آن:

set()

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

فرض کنید دو مجموعه A و B داریم اتحاد. اتصال از این دو مجموعه مجموعه ای با تمام عناصر از هر دو مجموعه است. چنین عملیاتی با استفاده از پایتون انجام می شود union() روش.

به عنوان مثال ، بیایید فرض کنیم که دو مجموعه شامل نام ماه داریم:

months_a = set(("Jan", "Feb", "March", "Apr", "May", "June"))
months_b = set(("July", "Aug", "Sep", "Oct", "Nov", "Dec"))

all_months = months_a.union(months_b)
print(all_months)

پس از اجرای این کد، all_months مجموعه شامل اتحاد مجموعه ها خواهد بود months_a و months_b:

{'Oct', 'Jan', 'Nov', 'May', 'Aug', 'Feb', 'Sep', 'March', 'Apr', 'Dec', 'June', 'July'}

اتحاد نیز می تواند انجام شود روی بیش از دو ست، و تمام عناصر آنها در یک مجموعه واحد ترکیب می شوند:

x = {1, 2, 3}
y = {4, 5, 6}
z = {7, 8, 9}

output = x.union(y, z)

print(output)

این منجر به:

{1, 2, 3, 4, 5, 6, 7, 8, 9}

در طول عملیات اتحادیه، تکراری نادیده گرفته می شود، و فقط یکی از موارد تکراری نشان داده می شود:

x = {1, 2, 3}
y = {4, 3, 6}
z = {7, 4, 9}

output = x.union(y, z)

print(output)

این باعث می شود که مجموعه فقط حاوی مقادیر منحصر به فرد از مجموعه های شروع باشد:

{1, 2, 3, 4, 6, 7, 9}

را | عملگر همچنین می تواند برای یافتن اتحاد دو یا چند مجموعه استفاده شود:

months_a = set(("Jan","Feb", "March", "Apr", "May", "June"))
months_b = set(("July", "Aug", "Sep", "Oct", "Nov", "Dec"))

print(months_a | months_b)

این همان نتیجه استفاده را خواهد داشت union() روش:

{'Feb', 'Apr', 'Sep', 'Dec', 'Nov', 'June', 'May', 'Oct', 'Jan', 'July', 'March', 'Aug'}

اگر می خواهید یک اتحادیه انجام دهید روی بیش از دو مجموعه، نام مجموعه ها را با استفاده از | اپراتور:

x = {1, 2, 3}
y = {4, 3, 6}
z = {7, 4, 9}

print(x | y | z)

این منجر به:

{1, 2, 3, 4, 6, 7, 9}

تقاطع مجموعه های پایتون

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

عملیات تقاطع در مجموعه ها را می توان با استفاده از هر دو به دست آورد & اپراتور یا intersection() روش:

x = {1, 2, 3}
y = {4, 3, 6}

print(x & y)

تنها عنصر مشترک این است 3:

{3}

همین امر نیز می تواند با intersection() روش:

x = {1, 2, 3}
y = {4, 3, 6}

z = x.intersection(y)
print(z)

این نیز منجر به:

{3}

تفاوت بین مجموعه های پایتون

فرض کنید دو مجموعه A و B دارید تفاوت بین A و B (A – B) مجموعه ای است با تمام عناصری که در A هستند اما در B نیستند. (B – A) مجموعه ای است با تمام عناصر در B اما نه در A.

پیشنهاد می‌کنیم بخوانید:  آموزش پایتون مبتدی: پونگ

برای تعیین تفاوت‌های مجموعه در پایتون، می‌توانیم از هر دو استفاده کنیم difference() روش یا - اپراتور:

set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
diff_set = set_a.difference(set_b)
print(diff_set)

کد بالا تفاوت بین را محاسبه می کند set_a و set_b، بنابراین آنها خروجی ما را تشکیل می دهند:

{1, 2, 3}

را عملگر منهای (-) همچنین می تواند برای یافتن تفاوت بین این دو مجموعه مانند شکل زیر استفاده شود:

set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
print(set_a - set_b)

که منجر به همان خروجی با استفاده از difference() روش:

{1, 2, 3}

را تفاوت متقارن از مجموعه های A و B مجموعه ای است با تمام عناصری که در A و B هستند به جز عناصری که در هر دو مجموعه مشترک هستند. با استفاده از پایتون تعیین می شود symmetric_difference() روش یا ^ اپراتور:

set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
symm_diff = set_a.symmetric_difference(set_b)
print(symm_diff)

این منجر به:

{1, 2, 3, 6, 7, 8}

همانطور که قبلاً بیان کردیم، تفاوت متقارن را می توان با استفاده از آن نیز یافت ^ اپراتور:

set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
print(set_a ^ set_b)

که همان خروجی قبلی را خواهد داشت:

{1, 2, 3, 6, 7, 8}

مقایسه مجموعه های پایتون

بسته به این می توانیم مجموعه ها را با هم مقایسه کنیم روی عناصری که دارند به این ترتیب، می توانیم بگوییم که آیا یک مجموعه a است یا خیر فوق مجموعه یا الف زیرمجموعه از یک مجموعه دیگر نتیجه چنین مقایسه ای یا خواهد بود True یا False.

برای بررسی اینکه آیا مجموعه A زیر مجموعه ای از B است، می توانیم از عملیات زیر استفاده کنیم:

A <= B

برای بررسی اینکه آیا B ابرمجموعه ای از A است، می توانیم از عملیات زیر استفاده کنیم:

B >= A

مثلا:

months_a = set(("Jan", "Feb", "March", "Apr", "May", "June"))
months_b = set(("Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

subset_check = months_a <= months_b
superset_check = months_b >= months_a

print(subset_check)
print(superset_check)

را months_a زیر مجموعه است months_b که است، روی از سوی دیگر، سوپر مجموعه از months_a. بنابراین، با اجرای کد بالا به دست می آید:

True
True

زیر مجموعه و ابرمجموعه را نیز می توان با استفاده از آن بررسی کرد issubset() و issuperset() روش هایی که در زیر نشان داده شده است:

months_a = set(("Jan","Feb", "March", "Apr", "May", "June"))
months_b = set(("Jan","Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"))

subset_check = months_a.issubset(months_b)
superset_check = months_b.issuperset(months_a)

print(subset_check)
print(superset_check)

که همان خروجی را در مثال بالا به دست می دهد:

True
True

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

در بخش‌های بعدی، برخی از متداول‌ترین متدهای مجموعه ارائه شده توسط پایتون را که قبلاً در مورد آنها صحبت نکرده‌ایم، بحث خواهیم کرد.

کپی 🀄()

این روش a را برمی گرداند کپی از مجموعه مورد نظر:

string_set = {"Nicholas", "Michelle", "John", "Mercy"}
x = string_set.copy()

print(x)

خروجی این را نشان می دهد x یک کپی از مجموعه است string_set:

{'John', 'Michelle', 'Nicholas', 'Mercy'}

isdisjoint()

این روش بررسی می کند آیا مجموعه های مورد نظر دارای یک تقاطع هستند یا نه. اگر مجموعه ها آیتم های مشترکی نداشته باشند، این روش برمی گردد True، در غیر این صورت برمی گردد False:

names_a = {"Nicholas", "Michelle", "John", "Mercy"}
names_b = {"Jeff", "Bosco", "Teddy", "Milly"}

x = names_a.isdisjoint(names_b)
print(x)

این دو مجموعه آیتم های مشترکی ندارند، بنابراین خروجی آن است True:

True

len()

این روش، را برمی گرداند طول یک مجموعه، که تعداد کل عناصر مجموعه است:

names_a = {"Nicholas", "Michelle", "John", "Mercy"}

print(len(names_a))

خروجی نشان می دهد که طول مجموعه 4 است:

4

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

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

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

برای ایجاد مجموعه های منجمد، ما از frozenset() روش. اجازه دهید دو “یخ زدگی” ایجاد کنیم، X و Y:

X = frozenset((1, 2, 3, 4, 5, 6))
Y = frozenset((4, 5, 6, 7, 8, 9))

print(X)
print(Y)

این منجر به:

frozenset({1, 2, 3, 4, 5, 6})
frozenset({4, 5, 6, 7, 8, 9})

“Frozenset” از استفاده از روش های مجموعه Python پشتیبانی می کند copy()، difference()، symmetric_difference()، isdisjoint()، issubset()، intersection()، issuperset()، و union().

نتیجه

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-06 12:05:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید