پرش به مطلب اصلی

ست

سِت (set) یا مجموعه یکی دیگه از کالکشن‌های معروف پایتونه. ست یه ظرفیه که یه سری عنصر توی خودش داره (عناصر تکراری رو قبول نمیکنه و اگر دوباره یه عنصر تکراری بذاریم توش، نادیده میگیره) که ترتیب ندارن. کد زیر رو ببینید:

set_gol = {'roz', 'zanbagh', 'maryam', 'atlasi', 'roz'}

دقت کنید که برای تعریف ست از { } استفاده میکنیم. توی کد بالا میبینید که دوتا roz داریم، پرینت بگیریم ببینیم چی میشه:

print(set_gol)

دیدید که فقط یه دونه roz پرینت گرفت یعنی عناصر تکراری رو نادیده میگیره!

مثلا اگر ست‌های زیر رو در نظر بگیرید، میبینید که میشه مثل بقیه کالکشن‌ها، یه سری کار روی ست هم انجام داد:

adade_zoj = {2, 4, 6, 8, 10}
adade_bozorg = {6, 7, 8, 9, 15}

کد زیر مجموعه ای از اعداد روپرینت میکنه که بزرگن ولی زوج نیستن:

print(adade_bozorg - adade_zoj)

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

print(adade_bozorg | adade_zoj)

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

print(adade_bozorg & adade_zoj)

کد زیر مجموعه ای از اعداد روپرینت میکنه یا بزرگن یا زوج (اونایی که هم بزرگن و هم زوج توی این مجموعه نیستن):

print(adade_bozorg ^ adade_zoj)

کدهای بالا رو بخونین یه بار دیگه، چون ممکنه این شرط‌ها یکم گیج کننده باشن برای بار اول!

ولی اگر دقت کرده باشین، زمانیکه یک ست رو پرینت میکنین، به صورت رندم نمایش داده میشه عناصرش، علتش اینه که عناصر داخل ست، مرتب نیستن. حالا اگر بخوایم یک ست رو مرتب کنیم (مثلا بر اساس حروف الفبا) چه کار کنیم؟ باید اون ست رو چیزای دیگه تبدیل کنیم. برای روشن شدن موضوع، set_gol رو در نظر بگیرید:

b = sorted(set_gol)
print(b)

توی کد بالا از تابع ()sorted استفاده کردیم تا set_gol رو مرتب کنیم. ولی دقت کنید که b الان یک لیسته نه یک ست! یعنی تابع ()sorted اومد ست set_gol رو به یه لیست تبدیل کرد.

با تابع ()add میشه عناصر مختلف به ست اضافه کرد:

set_gol.add('yas')
print(set_gol)

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

set_gol.remove('roz')
print(set_gol)

با تابع ()len میشه طول ست رو دید:

c = len(set_gol)
print(c)