আজকে আমরা পাইথনের একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা – স্ট্রাকচার, সেট (Set in Python) নিয়ে আলোচনা করব। এই পোস্টে আমরা জানব সেট কি ,সেটের মেথডগুলি এবং পাইথনে এটি কে কিভাবে ব্যবহার করব ?
Table of Contents
Definition of Set in python
সেট হল পাইথনের আরেকটি built-in ডেটা – স্ট্রাকচার, যদিও সেট অনেকটাই লিষ্ট এর মতন তবে পার্থক্যটা হলো যে সেটে কোন ডুপ্লিকেট এলিমেন্ট কে রাখা যায় না ।
সেট সম্পর্কে আমাদের কিছু গুরুত্বপূর্ণ জিনিস জেনে নেওয়া দরকার।
সেট mutable এবং unchangeable
অর্থাৎ আমরা সেটে এলিমেন্ট কে add , delete করতে পারব , কিন্তু কোন এলিমেন্ট কে update(change) করতে পারবো না।
এলিমেন্ট গুলি Unordered ( এলোমেলো )
Unordered মানে সেটে এলিমেন্ট গুলি নির্দিষ্ট কোন অর্ডার ফলো করে না অর্থাৎ এলিমেন্ট গুলি এলোমেলো( random ) অর্ডারে থাকে।
No Duplicacy Allowed
আমরা সেটে কোন ডুপ্লিকেট এলিমেন্টকে রাখতে পারি না।
Set এ True এবং 1 এই দুটো ভ্যালু সমান এবং এটি ডুপ্লিকেট হিসেবে চিহ্নিত হবে। যেটা প্রথমে দেওয়া হবে , সেট সেটাকে রেখে অন্যটাকে বাদ দেবে। যদিও এটি False এবং 0 ক্ষেত্রে ও প্রযোজ্য।
Also Read :- What is Coding & Programming in Easy Bengali? প্রোগ্রামিং এবং কোডিং কি? 2023
Creating a Set in Python
আমরা সেটকে (Set in Python -এ) দুই ভাবে তৈরি করতে পারি।
Normal way
সেটের এলিমেন্ট গুলি কার্লি ব্রাকেটের( { } ) মধ্যে কমা( , ) দিয়ে আলাদা করে লেখা হয়।
Example
myset={1,2,3,4}
print(myset)
print(type(myset))
PythonOutput
{1, 2, 3, 4}
<class 'set'>
Using set constructor
আমরা সেটের built-in set( ) ফাংশন ব্যবহার করে একটি সেটকে লিখতে পারি।
Example
myset=set([1,2,3,4])
print(myset)
print(type(myset))
PythonOutput
{1, 2, 3, 4}
<class 'set'>
Accessing elements from a Set in Python
আমরা লিস্ট বা টাপেলের মতন ইনডেক্স ব্যবহার করে সরাসরি সেটে ভ্যালু দেখতে পারি না।যদি আমরা ইনডেক্স ব্যাবহার করে সেটের কোনো পজিসিশনের ভ্যালু দেখতে চাই তাহলে আমরা error পাব।
Example – 1
myset=set([1,2,3,4])
print(myset[1])
PythonOutput – 2
ERROR!
Traceback (most recent call last):
File "<main.py>", line 4, in <module>
TypeError: 'set' object is not subscriptable
তবে for loop ব্যবহার করে সেট থেকে একটা একটা করে এলিমেন্টকে এক্সেস করতে পারি।
Example – 1
myset=set([1,2,3,4])
for item in myset:
print(item)
PythonOutput – 2
1
2
3
4
Also Read :- Python কি এবং কেন শিখব? What is Python in Easy Bengali? 2023
Add element in a Set in Python
আমরা add ( ) মেথড ব্যবহার করে একটি এলিমেন্টকে সরাসরি সেটে insert করতে পারি।
Example
myset=set([1,2,3,4])
myset.add(5)
print(myset)
PythonOutput
{1, 2, 3, 4, 5}
Remove/Delete element from a Set in Python
আমরা remove ( ) বা discard ( ) মেথড ব্যবহার করে সেট থেকে কোন এলিমেন্ট কে ডিলিট করতে পারি।
যে এলিমেন্ট তাকে delete করতে চাইছি যদি সেই এলিমেন্ট টা সেটে exists না করে তাহলে remove ( ) মেথড error দেবে কিন্তু discard ( ) মেথড error দেবে না।
এ বিষয়ে বিশদে পরে আলোচনা করব।
Example – 1 of remove ( ) method
myset=set([1,2,3,4])
myset.remove(5)
print(myset)
PythonOutput – 1 of remove ( ) method
ERROR!
Traceback (most recent call last):
File "<main.py>", line 4, in <module>
KeyError: 5
Example – 2 of discard ( ) method
myset=set([1,2,3,4])
myset.discard(5)
print(myset)
PythonOutput – 2 of discard ( ) method
{1, 2, 3, 4}
Also Read :- Learn Python Free for Beginners in Bengali 2023
Update element in a Set in Python
আমরা আগেই আলোচনা করেছি যে সেটে কোন এলিমেন্টকে add বা delete করা গেলেও , আমরা সেটের কোন এলিমেন্টকে পরিবর্তন( update) করতে পারব না অর্থাৎ সেটের এলিমেন্ট unchangeable।
Basic Set Operations in python (বেসিক সেট অপারেশন)
len ( )
একটি সেটের length বা দৈর্ঘ্য রিটার্ন করে।
Example
myset=set([1,2,3,4])
print(len(myset))
PythonOutput
4
Membership ( in )
এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) সেটের এর মধ্যে আছে কি না ? যদি থাকে True রিটার্ন করবে যদি না থাকে False রিটার্ন করবে।
Example
myset=set([1,2,3,4])
print(3 in myset)
print(5 in myset)
PythonOutput
True
False
Membership ( not in )
এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) সেটের এর মধ্যে আছে কি না ? যদিও এটির ব্যবহার in এর ঠিক উল্টো (opposite)। যদি না থাকে True রিটার্ন করবে যদি থাকে False রিটার্ন করবে।
Example
myset=set([1,2,3,4])
print(3 not in myset)
print(5 not in myset)
PythonOutput
False
True
max ( )
একটি সেটের মধ্যে থেকে বড়ো (maximum) ভ্যালুটি রিটার্ন করবে।
Example
myset=set([1,2,3,4])
print(max(myset))
PythonOutput
4
min ( )
একটি সেটের মধ্যে থেকে ছোট (minimum) ভ্যালুটি রিটার্ন করবে।
Example
myset=set([1,2,3,4])
print(min(myset))
PythonOutput
1
sum ( )
একটি সেটের মধ্যে সকল সংখ্যার যোগফল রিটার্ন করবে।
Example
myset=set([1,2,3,4])
print(sum(myset))
PythonOutput
10
sorted ( )
একটা নতুন sorted লিস্ট রিটার্ন করবে। কিন্তু অরিজিনাল সেটটা একই থাকবে, যেহেতু সেট immutable।
Example
myset=set([8,0,2,1,3,10,100,11])
print(sorted(myset))
print(myset)
PythonOutput
[0, 1, 2, 3, 8, 10, 11, 100]
{0, 1, 2, 3, 100, 8, 10, 11}
enumerate ( )
এই ফাংশান টি সেটের প্রতিটি এলিমেন্ট এবং তার ইনডেক্স নাম্বার নিয়ে একটি tuple তৈরি করবে এবং enumerate অবজেক্ট আকারে রিটার্ন করবে।
Example
myset=set([8,0,2,1,3,10,100,11])
for item in enumerate(myset):
print(item)
PythonOutput
(0, 0)
(1, 1)
(2, 2)
(3, 3)
(4, 100)
(5, 8)
(6, 10)
(7, 11)
all ( )
True রিটার্ন করবে যদি সেটের প্রত্যেকটি এলিমেন্ট True হয় । অনথ্যায় False রিটার্ন করবে ।
Example
myset=set([0,1,2])
print(all(myset))
myset=set([1])
print(all(myset))
PythonOutput
False
True
উপরের কোডটি লক্ষ্য করলে দেখা যাবে যেহেতু সেট এর একটি এলিমেন্ট 1 সেই কারণেই আমাদের , all () ফাংশন True রিটার্ন করেছে। কারণ 1 এবং True দুটোর ভ্যালু একই।
any ( )
True রিটার্ন করবে যদি কমপক্ষে সেটের একটিএলিমেন্ট True হয় । অনথ্যায় False রিটার্ন করবে ।
Example
myset=set([0,1,2])
print(any(myset))
myset=set()
print(any(myset))
PythonOutput
True
False
উপরের কোডটি লক্ষ্য করলে দেখা যাবে যেহেতু কমপক্ষে , সেট এর একটি এলিমেন্ট 1 বা True সেই কারণেই আমাদের , any ( ) ফাংশন True রিটার্ন করেছে।
এবং যেহেতু পরের কোডটিতে , সেটের মধ্যে কোন এলিমেন্ট নেই অর্থাৎ সেটটি সম্পূর্ণ ফাঁকা ( empty ) সেই কারণে any ( ) ফাংশন False রিটার্ন করেছে।
tuple ( )
এটির মাধ্যমে আমরা যে কোন sequence কে ( টাপল (tuple) , ডিকশনারি (dictionary) , সেট (set) , স্ট্রিং (string) ) কে টাপলে পরিবর্তন করতে পারবো।
Example
mytuple='techinbengali.com'
print(tuple(mytuple))
PythonOutput
('t', 'e', 'c', 'h', 'i', 'n', 'b', 'e', 'n', 'g', 'a', 'l', 'i', '.', 'c', 'o', 'm')
Also Read :- Function in Python | Easy Bengali 2024
Basic Set methods in python (বেসিক সেট মেথডস)
update ( )
এই মেথডটিকে ব্যবহার করে আমরা দুটো সেটকে একটি সেটে রূপান্তর করতে পারি। তবে কোন ডুপ্লিকেট এলিমেন্ট থাকবে না।
Example
myset=set([0,1,2])
myset2=set([3,4,5])
myset.update(myset2)
print(myset)
PythonOutput
{0, 1, 2, 3, 4, 5}
add ( )
এই মেথডটিকে ব্যবহার করে আমরা কোন এলিমেন্টকে সেটে add করতে পারি।তবে কোন ডুপ্লিকেট এলিমেন্ট থাকবে না।
Example
myset=set([0,1,2])
myset.add(3)
print(myset)
PythonOutput
{0, 1, 2, 3}
copy ( )
এই মেথডটিকে আমাদেরকে , সেট টির কপি রিটার্ন করে।
Example
myset=set([0,1,2])
print(myset.copy())
PythonOutput
{0, 1, 2}
pop ( )
এই মেথডটি সেট থেকে যেকোনো ( arbitrary ) একটা ভ্যালুকে ডিলিট করবে এবং সেই ভ্যালু টাকে রিটার্ন করবে। তবে সেটে যদি কোন এলিমেন্ট না থাকে অর্থাৎ সেটটি সম্পূর্ণ ফাঁকা থাকে , তাহলে KeyErrror নামে একটি error দেবে।
Example – 1
myset=set([0,1,2,100,20,87])
print(myset.pop())
PythonOutput – 1
0
Example – 2
myset=set()
print(myset.pop())
PythonOutput – 2
ERROR!
Traceback (most recent call last):
File "<main.py>", line 4, in <module>
KeyError: 'pop from an empty set'
remove ( )
এই মেথডটি সেট থেকে একটা এলিমেন্ট( যেই এলিমেন্ট টাকে আমরা আরগুমেন্টে পাস করবো ) ডিলিট করবে। তবে এলিমেন্ট টি যদি সেটে না থাকে , তাহলে KeyErrror নামে একটি error দেবে।
Example – 1
myset=set([1,2,3,4])
myset.remove(4)
print(f"After deleting the set will be: {myset}")
PythonOutput – 1
After deleting the set will be: {1, 2, 3}
Example – 2
myset=set([1,2,3,4])
myset.remove(5) # give an error, beacuse 5 is not present in myset
print(f"After deleting the set will be: {myset}")
PythonOutput – 2
ERROR!
Traceback (most recent call last):
File "<main.py>", line 4, in <module>
KeyError: 5
discard ( )
এই মেথডটি সেট থেকে একটা এলিমেন্ট( যেই এলিমেন্ট টাকে আমরা আরগুমেন্টে পাস করবো ) ডিলিট করবে। তবে এলিমেন্ট টি যদি সেটে না থাকে , তাহলে এই মেথডটি কোন error দেবে না।
Example – 1
myset=set([1,2,3,4])
myset.discard(4)
print(f"After deleting the set will be: {myset}")
PythonOutput – 1
After deleting the set will be: {1, 2, 3}
Example – 2
myset=set([1,2,3,4])
myset.discard(6) # I'm not getting any errors even though 6 is absent in my set.
print(f"After deleting the set will be: {myset}")
PythonOutput – 2
After deleting the set will be: {1, 2, 3}
clear ( )
এই মেথডটি সেট থেকে সমস্ত এলিমেন্ট কে ডিলিট করে দেয়।
Example
myset=set([1,2,3])
myset.clear()
print(myset)
PythonOutput
set()
অংকে যেমন আমাদের সেট আছে , ঠিক তেমনি পাইথনে আমরা সেটের সমস্ত অ্যাডভান্স মেথড ব্যবহার করে mathemetical ক্যালকুলেশন করতে পারি।
আসুন এবার দেখে নেওয়া যাক পাইথনে কি কি অ্যাডভান্স মেথড আছে যেগুলি সাহায্যে আমরা সেট অপারেশন করতে পারি।
Also Read :- File Handling in Python | Easy Bengali 2023
Advanced Set methods in python ( অ্যাডভান্সড সেট মেথডস)
issubset ( )
আসুন অল্প করে জেনে নিই subset কি, যদি কোন একটা সেটের ( এখানে test_set ) প্রত্যেকটি এলিমেন্ট অপর আরেকটি সেটের ( এখানে myset ) প্রত্যেকটি এলিমেন্টের সঙ্গে সমান হয় তাহলেই আমরা সেই সেটটিকে ( এখানে test_set ) অপর সেটটির ( এখানে myset ) subset বলতে পারি।
এখানে test_set.issubset(myset) সিনট্যাক্স টির মানে হল , test_set কি myset এর subset ? যদি subset হয় তাহলে True রিটার্ন করবে অন্যথায় False।
যদিও এটিকে আমরা test_set < = myset এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
test_set.issubset(myset)
PythonExample
myset=set([1,2,3,4,5])
test_set=set([2,3,4])
print(test_set.issubset(myset))
# or
print(test_set <= myset)
PythonOutput
True
issuperset ( )
আসুন অল্প করে জেনে নিই superset কি, যদি কোন একটা সেটের ( এখানে myset ) প্রত্যেকটি এলিমেন্ট অপর আরেকটি সেটের ( এখানে test_set ) প্রত্যেকটি এলিমেন্টের সঙ্গে সমান হয় তাহলেই আমরা সেই সেটটিকে ( এখানে myset ) অপর সেটটির ( এখানে test_set ) super set বলতে পারি।
এক কথায় বলতে গেলে এটি সাবসেটের ঠিক উল্টো এখানে myset হলো সুপার সেট।
এখানে myset.issuperset(test_set) সিনট্যাক্স টির মানে হল , myset কি test_set এর superset ? যদি super set হয় তাহলে True রিটার্ন করবে অন্যথায় False।
যদিও এটিকে আমরা myset > = test_set এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
myset.issuperset(test_set)
PythonExample
myset=set([1,2,3,4,5])
test_set=set([2,3,4])
print(myset.issuperset(test_set))
# or
print(myset >= test_set)
PythonOutput
True
union ( )
সহজ ভাবে বলতে গেলে , union ( ) মেথডটি একটি সেট রিটার্ন করে , যার মধ্যে দুটি সেটের সকল এলিমেন্ট গুলি থাকবে। কিন্তু কোন ডুপ্লিকেট এলিমেন্ট থাকবে না।
যদিও এটিকে আমরা myset | test_set এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
Example
myset=set([3,2,6,7,5])
test_set=set([1,4,2,6])
print(myset.union(test_set))
# or
print(myset | test_set)
PythonOutput
{1, 2, 3, 4, 5, 6, 7}
intersection ( )
সহজ ভাবে বলতে গেলে , intersection ( ) মেথডটি একটি সেট রিটার্ন করে , যার মধ্যে দুটি সেটের কমন এলিমেন্ট গুলি থাকবে।
যদিও এটিকে আমরা myset & test_set এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
Example
myset=set([3,2,6,7,5])
test_set=set([1,4,2,6])
print(myset.intersection(test_set))
# or
print(myset & test_set)
PythonOutput
{2, 6}
difference ( )
difference ( ) মেথডটি একটি সেট রিটার্ন করে , যার মধ্যে দুটি সেটের কমন এলিমেন্ট গুলি বাদ দিয়ে set 1 এর সকল এলিমেন্ট গুলি থাকবে।
যদিও এটিকে আমরা myset – test_set এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
Example
myset=set([3,2,6,7,5])
test_set=set([1,4,2,6])
print(myset.difference(test_set))
# or
print(myset - test_set)
PythonOutput
{3, 5, 7}
symmetric_difference ( )
symmetric_difference ( ) মেথডটি একটি সেট রিটার্ন করে , যার মধ্যে দুটি সেটের কমন এলিমেন্ট গুলি বাদ দিয়ে , দুটি সেট এর বাকি থাকা সকল এলিমেন্ট গুলি থাকবে।
যদিও এটিকে আমরা myset ^ test_set এভাবেও লিখতে পারি। আমরা আমাদের কাজের ক্ষেত্রে , আমাদের সুবিধার মতন যে কোন একটি ব্যবহার করতে পারি।
Example
myset=set([3,2,6,7,5])
test_set=set([1,4,2,6])
print(myset.symmetric_difference(test_set))
# or
print(myset ^ test_set)
PythonOutput
{1, 3, 4, 5, 7}
Also Read :- What is Module in Python | Learn in Easy Bengali 2024
এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।
ধন্যবাদ!!