গণিতে, সেট হলো স্বতন্ত্র বস্তুগুলোর সমষ্টি, যাকে নিজে নিজের অধিকারভুক্ত একটি বস্তু হিসেবে বিবেচনা করা হয়। উদাহরণস্বরূপ, সংখ্যা ২, ৪, এবং ৬ আলাদা আলাদা বিবেচনা করলে স্বতন্ত্র বস্তু, কিন্তু সমষ্টিগত বিবেচনা করলে তিনটি উপাদানের একটি সেট গঠন করে, লেখা হয় {2,4,6}।
সেট অপারেশন
| অপারেশন | নোটেশন | অর্থ |
|---|---|---|
| ইন্টারসেকশন | A ∩ B | A ও B দুটোতেই থাকা সব উপাদান |
| ইউনিয়ন | A ∪ B | A বা B বা উভয়তেই থাকা সব উপাদান |
| ডিফারেন্স | A − B | A-তে আছে কিন্তু B-তে নেই এমন উপাদান |
| কমপ্লিমেন্ট | (অথবা) | A-তে নেই এমন সব উপাদান |
পাইথনে, লিস্টের চেয়ে সেট ব্যবহারের প্রধান সুবিধা হলো নির্দিষ্ট উপাদান সেটের সদস্য কিনা তা যাচাই করার জন্য অপ্টিমাইজড ফাংশন রয়েছে। এটি হ্যাশ টেবিল ডেটা স্ট্রাকচার উপর ভিত্তি করে।
সেটের মেথড
add(x) মেথড: এটি আইটেম x কে সেটে যোগ করে যদি তা পূর্বে না থাকে।
A = {"AA", "BB", "CC"}
A.add("VV")
এটি A সেটে VV যোগ করবে।
union(s) মেথড: এটি দুটি সেটের ইউনিয়ন রিটার্ন করে। অপারেটর '|' ব্যবহার করা My_Set1.union(My_Set2) লেখার সমান।
A = {"AA", "BB", "CC"}
B = {"MM", "NN"}
Z = A.union(B) OR Z = A|B
ফলাফল সেটে A ও B-এর সব উপাদান থাকবে।
intersection(s) মেথড: এটি দুটি দেওয়া সেটের ইন্টারসেকশন রিটার্ন করে। '&' অপারেটর এই অপারেশনে ব্যবহার করা যায়।
S = A.intersection(B)
ফলাফল সেটে A ও B-এর সাধারণ উপাদান থাকবে।
difference(s) মেথড: এটি এমন একটি সেট রিটার্ন করে যেটিতে প্রথম সেটের সব উপাদান আছে কিন্তু দ্বিতীয় সেটে নেই। এখানে '-' অপারেটর ব্যবহার করা যায়।
W = A.difference(B) OR S = A - B
ফলাফল সেটে A-র সকল উপাদান থাকবে যা B-তে নেই।
clear() মেথড: পুরো সেট খালি হয়ে যাবে।
B.clear()
B সেট ক্লিয়ার হয়ে যাবে।
সেটের অপারেটর
সেট ও ফ্রোজেন সেট নিচের অপারেটরগুলো সমর্থন করে -
key in s # কন্টেইনমেন্ট চেক key not in s # নন-কন্টেইনমেন্ট চেক s1 == s2 # s1, s2-এর সমতুল্য s1 != s2 # s1, s2-এর সমতুল্য নয় s1 <= s2 # s1, s2-এর সাবসেট s1 < s2 # s1, s2-এর প্রপার সাবসেট s1 >= s2 # s1, s2-এর সুপারসেট s1 > s2 # s1, s2-এর প্রপার সুপারসেট s1 | s2 # s1 ও s2-এর ইউনিয়ন s1 & s2 # s1 ও s2-এর ইন্টারসেকশন s1 - s2 # s1-এ আছে কিন্তু s2-এ নেই এমন উপাদান s1 ^ s2 # শুধু s1 বা s2-এ রয়েছে এমন উপাদান
উদাহরণ কোড
# পাইথন প্রোগ্রাম: সেটের কাজকর্ম প্রদর্শন
# দুটি সেট তৈরি
My_Set1 = set()
My_Set2 = set()
# My_Set1-এ উপাদান যোগ
for i in range(1, 6):
My_Set1.add(i)
# My_Set2-এ উপাদান যোগ
for i in range(3, 8):
My_Set2.add(i)
print("My_Set1 = ", My_Set1)
print("My_Set2 = ", My_Set2)
print("\n")
# My_Set1 ও My_Set2-এর ইউনিয়ন
My_Set3 = My_Set1 | My_Set2 # My_Set1.union(My_Set2)
print("My_Set1 ও My_Set2-এর ইউনিয়ন: My_Set3 = ", My_Set3)
# My_Set1 ও My_Set2-এর ইন্টারসেকশন
My_Set4 = My_Set1 & My_Set2 # My_Set1.intersection(My_Set2)
print("My_Set1 ও My_Set2-এর ইন্টারসেকশন: My_Set4 = ", My_Set4)
print("\n")
# My_Set3 ও My_Set4-এর সম্পর্ক যাচাই
if My_Set3 > My_Set4: # My_Set3.issuperset(My_Set4)
print("My_Set3, My_Set4-এর সুপারসেট")
elif My_Set3 < My_Set4: # My_Set3.issubset(My_Set4)
print("My_Set3, My_Set4-এর সাবসেট")
else: # My_Set3 == My_Set4
print("My_Set3, My_Set4-এর সমান")
# My_Set4 ও My_Set3-এর সম্পর্ক
if My_Set4 < My_Set3: # My_Set4.issubset(My_Set3)
print("My_Set4, My_Set3-এর সাবসেট")
print("\n")
# My_Set3 ও My_Set4-এর ডিফারেন্স
My_Set5 = My_Set3 - My_Set4
print("My_Set3-এ আছে My_Set4-এ নেই: My_Set5 = ", My_Set5)
print("\n")
# My_Set4 ও My_Set5 ডিজয়েন্ট কিনা যাচাই
if My_Set4.isdisjoint(My_Set5):
print("My_Set4 ও My_Set5-এর কিছুই সাধারণ নয়\n")
# My_Set5-এর সব মান মুছে ফেলা
My_Set5.clear()
print("My_Set5-এ clear প্রয়োগ করার পর: ")
print("My_Set5 = ", My_Set5)
আউটপুট
My_Set1 = {1, 2, 3, 4, 5}
My_Set2 = {3, 4, 5, 6, 7}
My_Set1 ও My_Set2-এর ইউনিয়ন: My_Set3 = {1, 2, 3, 4, 5, 6, 7}
My_Set1 ও My_Set2-এর ইন্টারসেকশন: My_Set4 = {3, 4, 5}
My_Set3, My_Set4-এর সুপারসেট
My_Set4, My_Set3-এর সাবসেট
My_Set3-এ আছে My_Set4-এ নেই: My_Set5 = {1, 2, 6, 7}
My_Set4 ও My_Set5-এর কিছুই সাধারণ নয়
My_Set5-এ clear প্রয়োগ করার পর:
My_Set5 = set()