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

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

مجموعه‌ها (set) در پایتون یکی دیگر از انواع دیتاتایپ‌ها به شمار می‌آیند. پایتون دو نمونه مجموعه به صورت set و Frozenset را تدارک دیده است که در اینجا آن‌ها را بررسی می‌کنیم.

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

Set یا مجموعه، یک دیتاتایپ تغییر پذیر است. اما مجموعه‌های فریزشده frozenset به صورت تغییر ناپذیر هستند. هر دو این مجموعه‌ها در پایتون به عنوان مجموعه‌های غیرترتیب پذیر (unordered) از اشیا غیرقابل تغییر (immutable) شناخته می‌شوند.

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

نکته: بر اساس مقالات رسمی:«آبجکتی که هش پذیر یا Hasable باشد، دارای یک مقدار هش (Hash) است که در طول زندگی و حیات آن آبجکت تغییر نمی‌کند و می‌تواند با دیگر آبجکت‌هایی که هش پذیر هستند مقایسه شوند. این آبجکت می‌تواند به عنوان کلید‌های یک دیکشتری و یا یک مجموعه از اعضا در نظر گرفته شوند. زیر این ساختار داده از مقدارهای هش به صورت درونی استفاده می‌کنند. تمام آبجکت‌های درونی تغییرناپذیر در پایتون هش پذیر هستند، در حالی که مقدارهای تغییر پذیر قابلیت هش شدن را ندارند».

آبجکت‌هایی در زمانی به صورت برابر با هم مقایسه می‌شوند که دارای مقدار هش یکسان باشند. مجموعه‌ها یا set‌ها یکی از معمولی‌ترین مواردی هستند که برای عضویت به کارگرفته می‌شوند و به همین خاطر ما در مثال زیر از اپراتور in برای بررسی عضویت استفاده کرده‌ایم. مثال زیر را ببینید:

>>> small_primes = set() # empty set

>>> small_primes.add(2) # adding one element at a time

>>> small_primes.add(3)

>>> small_primes.add(5)

>>> small_primes

{2, 3, 5}

>>> small_primes.add(1) # Look what I've done, 1 is not a prime!

>>> small_primes

{1, 2, 3, 5}

>>> small_primes.remove(1) # so let's remove it

>>> 3 in small_primes # membership test

True

>>> 4 in small_primes

False

>>> 4 not in small_primes # negated membership test

True

>>> small_primes.add(3) # trying to add 3 again

>>> small_primes

{2, 3, 5} # no change, duplication is not allowed

>>> bigger_primes = set([5, 7, 11, 13]) # faster creation

>>> small_primes | bigger_primes # union operator `|`

{2, 3, 5, 7, 11, 13}

>>> small_primes & bigger_primes # intersection operator `&`

{5}

>>> small_primes - bigger_primes # difference operator `-`

{2, 3}


 

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

توجه داشته باشید که ما برای ساختن یک مجموعه یا set می‌توانیم از لیست‌ها و تاپل یا هر دستورالعملی که منجر به تکرار اعضا شود (مانند حلقه‌های for و while) استفاده کنید

با استفاده از دو متد add و remove نیز می‌توان به ترتیب برای اضافه کردن و یا حذف کردن یک عضو به یک مجموعه استفاده کرد.

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

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

>>> small_primes = {2, 3, 5, 5, 3}

>>> small_primes

{2, 3, 5}

 

توجه کنید که من در اینجا عدد 3 و 5 را به صورت تکراری به کار برده ام، اما شما در نتیجه کار هیچ تکراری را مشاهده نمی‌کنید.

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

در اینجا می‌خواهم موضوع frozenset‌ها را با یک مثال برایتان توضیح دهم:

>>> small_primes = frozenset([2, 3, 5, 7])

>>> bigger_primes = frozenset([5, 7, 11])

>>> small_primes.add(11) # we cannot add to a frozenset

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: 'frozenset' object has no attribute 'add'

>>> small_primes.remove(2) # neither we can remove

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: 'frozenset' object has no attribute 'remove'

>>> small_primes & bigger_primes # intersect, union, etc. allowed

frozenset({5, 7})

 

همانطور که در اینجا مشاهده می‌کنید، frozenset‌ها آبجکت‌هایی هستند که به نسبت set‌های معمولی تغییرپذیر محدودتر عمل می‌کنند. در اینجا امکان استفاده از متدهای add و remove وجود ندارد.

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

اگر پرسشی داشتید می توانید در پایین همین مقاله برای من بنویسید. من تمام آن ها را خوانده برای شما پاسخ های مقتضی را خواهم نوشت. به خواندن ادامه دهید تا با قابلیت های بیشتر پایتون این زبان شگفت انگیز بیشتر آشنا شوید.

No votes yet.
Please wait...

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

منو اصلی

question