Sets in Python

Python Set
Python Set

Python Language এ Set কি?

Python Language এ List এবং Tuple এর মতই আরেকটি ডাটা স্ট্রাকচার হচ্ছে Set. পার্থক্যটি হচ্ছে আপনি চাইলে List এবং Tuple এর মধ্যে duplicate value রাখতে পারবেন কিন্তু Set এ কোনো duplicate Value রাখতে পারবেন না। আর List এবং Tuple এর value গুলো index আকারে সাজানো থাকে কিন্তু Set এর Value গুলো indexing আকারে থাকেনা বা indexing করা যায় না। সেটা অবশ্য লাগেওনা, কারণ Set এর প্রত্যেকটি value ই ইউনিক। মূলতঃ গাণিতিক কাজ যেমন union, intersection এবং symmetric difference ইত্যাদি বের করার জন্য Set ব্যবহৃত হয়।

Set কিভাবে তৈরী করা হয়?

set তৈরী করতে হলে আপনাকে (curly braces) { } ব্র্যাকেট অথবা set ফাংশন ব্যবহার করতে হবে , তবে ফাকা set তৈরি করার সময় { } ব্যবহার করা যাবে না কারণ এটা ফাকা ডিকশনারি তৈরি করার সাথে কনফ্লিক্ট করবে। বরং set() function ব্যবহার করে ফাকা সেট তৈরি করতে হয়।চলুন একটি উদাহরণ দেখা যাক :

# set of integers
my_set = {1, 2, 3}
print(my_set)

# set of mixed datatypes
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)

set এর মধ্যে পরিবর্তন করা যাবে (mutable) এইরকম Data Type যেমন List এবং Dictionary রাখা যাবেনা।

# set do not have duplicates
# Output: {1, 2, 3, 4}
my_set = {1,2,3,4,3,2}
print(my_set)

# set cannot have mutable items
# here [3, 4] is a mutable list
# If you uncomment line #12,
# this will cause an error.
# TypeError: unhashable type: 'list'

#my_set = {1, 2, [3, 4]}

# we can make set from a list
# Output: {1, 2, 3}
my_set = set([1,2,3,2])
print(my_set)

উল্লেখ্য , এখানে আপনি যদি লাইন ১২ কে uncomment করেন , তাহলে পাইথন আপনাকে error প্রদর্শন করবে।

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

কিভাবে পাইথন Set এ চেঞ্জ আনবেন?

আমরা আগেই জেনেছি , set এ কোনো indexing থাকেনা এবং এর value গুলো unordered অর্থাৎ যেইভাবে ইচ্ছা সেইভাবে রাখা যায় , শুধু duplicate না হলেই হলো। আর যেহেতু set এ কোনো index থাকেনা তাই একে আপনি index ধরে কোনো রকম access অথবা slicing করতে পারবেন না। তবে আপনি চাইলে add() function দিয়ে set এর মধ্যে নতুন value add করতে পারবেন এবং update() function দিয়ে আগের value কে update করতে পারবেন। তাছাড়া update Function দিয়ে আপনি অন্যান্য data type যেমন list, tuple কে set এ পরিবর্তন করতে পারবেন। চলুন কয়েকটি উদাহরণ দিয়ে বুঝা যাক:

# initialize my_set
my_set = {1,3}
print(my_set)

# if you uncomment line 9,
# you will get an error
# TypeError: 'set' object does not support indexing

#my_set[0]

# add an element
# Output: {1, 2, 3}
my_set.add(2)
print(my_set)

# add multiple elements
# Output: {1, 2, 3, 4}
my_set.update([2,3,4])
print(my_set)

# add list and set
# Output: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4,5], {1,6,8})
print(my_set)

উল্লেখ্য , এখানে আপনি যদি লাইন ৯ কে uncomment করেন , তাহলে পাইথন আপনাকে error প্রদর্শন করবে। কারণ set এ indexing support করেনা।

Set থেকে কোনো element কিভাবে remove করবেন?

Set থেকে কোনো element কে remove করার জন্য discard() function এবং remove() function ব্যবহৃত হয়। পার্থক্য হচ্ছে discard() function দিয়ে remove করা element যদি Set এ না থাকে পাইথন আপনাকে কোনো error প্রদর্শন করবেনা, এবং set অপরিবর্তনীয় থাকবে, অন্যদিকে remove() function দিয়ে কোনো কিছু remove করা কালীন সেই element যদি set এ না থাকে, তাহলে Python আপনাকে error প্রদর্শন করবে। নিচের উদাহরণ গুলো লক্ষ্য করুন :

# initialize my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)

# discard an element
# Output: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)

# remove an element
# Output: {1, 3, 5}
my_set.remove(6)
print(my_set)

# discard an element
# not present in my_set
# Output: {1, 3, 5}
my_set.discard(2)
print(my_set)

# remove an element
# not present in my_set
# If you uncomment line 27,
# you will get an error.
# Output: KeyError: 2

#my_set.remove(2)

উল্লেখ্য , এখানে আপনি যদি লাইন ২৭ কে uncomment করেন , তাহলে পাইথন আপনাকে error প্রদর্শন করবে। কারণ remove() function দিয়ে যেটি রিমুভ করার চেষ্টা করতেছেন সেটি Set এর মধ্যে নেই।

একইভাবে আপনি চাইলে Set থেকে কোনো element কে pop() function দিয়ে remove অথবা return করতে পারবেন। আর যেহেতু Python Set এ কোনো index থাকেনা , তাই আপনি বুঝতে পারবেন না , কোন আইটেম টি remove হয়েছে। অর্থাৎ randomly Item remove হবে।

# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")
print(my_set)

# pop an element
# Output: random element
print(my_set.pop())

# pop another element
# Output: random element
my_set.pop()
print(my_set)

পাইথনের clear() function দিয়ে আপনি পুরো set কেই remove করে দিতে পারেন। নিচের উদাহরণ দেখুন :

# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")

# clear my_set
#Output: set()
my_set.clear()
print(my_set)

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

পাইথনে set দিয়ে কিছু অপারেশন

আগেই বলা হয়েছে python এ গাণিতিক কাজ যেমন union, intersection এবং symmetric difference ইত্যাদি বের করার জন্য Set ব্যবহৃত হয়। চলুন এইরকম কিছু কাজ করা যাক :

Set Union

গণিতে Union বলা হয় যখন একাধিক সেট elements থেকে common এবং uncommon সব গুলু element কে নিবে এবং কোনো duplicate value নিবেনা। ব্যাপারটা নিচের ছবির মতো:

python Union in Three sets element
python Union in Three sets element
python Union in two sets element
python Union in two sets element

আর পাইথনে Union এর কাজটি করা হয় ( । ) অথবা union() function দিয়ে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)

# use union function
>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}

# use union function on B
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}

Set Intersection

গণিতে Intersection বলা হয় যখন একাধিক সেট elements থেকে শুধু common সব গুলু element কে নিবে এবং কোনো uncommon বা duplicate value নিবেনা। ব্যাপারটা নিচের ছবির মতো:

intersection in three element
intersection in three element
intersection in two element
intersection in two element

আর পাইথনে intersection এর কাজটি করা হয় ( & ) অথবা intersection() function দিয়ে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use & operator
# Output: {4, 5}
print(A & B)

# use intersection function on A
>>> A.intersection(B)
{4, 5}

# use intersection function on B
>>> B.intersection(A)
{4, 5}

Set Difference

গণিতে Set Difference বলা হয় যখন একাধিক সেট elements এর প্রথম set এর যেইসব element বাকি কোনো set এ পাওয়া যাবেনা শুধু সেগুলোকে নিবে । ব্যাপারটা নিচের ছবির মতো:

set-difference in python
set-difference in python

আর পাইথনে difference এর কাজটি করা হয় ( – ) অথবা difference() function দিয়ে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use - operator on A
# Output: {1, 2, 3}
print(A - B)

# use difference function on A
>>> A.difference(B)
{1, 2, 3}

# use - operator on B
>>> B - A
{8, 6, 7}

# use difference function on B
>>> B.difference(A)
{8, 6, 7}

Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django

Set Symmetric Difference

গণিতে Set Symmetric Difference বলা হয় যখন একাধিক সেট elements এর মধ্যে শুধু uncommon গুলোকে নিবে । ব্যাপারটা নিচের ছবির মতো:

Set Semmmetric Difference in Python
Set Semmmetric Difference in Python

আর পাইথনে Set Symmetric Difference এর কাজটি করা হয় ( ^ ) অথবা symmetric_difference() function দিয়ে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use ^ operator
# Output: {1, 2, 3, 6, 7, 8}
print(A ^ B)

# use symmetric_difference function on A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}

# use symmetric_difference function on B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}

SET দিয়ে আরো কিছু Operations

set এর মধ্যে কোনো element আছে কিনা তা চেক করার জন্য আমরা in Operator টি ব্যবহার করতে পারি। থাকলে true return করবে আর না থাকলে false রিটার্ন করবে।

# initialize my_set
my_set = set("apple")

# check if 'a' is present
# Output: True
print('a' in my_set)

# check if 'p' is present
# Output: False
print('p' not in my_set)

Iterating Through a Set

পাইথনের for loop দিয়ে আপনি Set এর item গুলোকে iterate করতে পারেন ।

>>> for letter in set(“apple”):
… print(letter)

a
p
e
l

Set এর কিছু Built-in Function List

Set নিয়ে বিভিন্ন কাজ করার জন্য সাধারণ কিছু function নিচে সেগুলোর বিস্তারিত দেওয়া হলো।

Built-in Functions with Set
Function Description
all() Set এর সব element যখন true, তখন এটি true return করবে।
any() Set এর যেকোনো element যখন true, তখন এটি true return করবে।
len() Set এর Length return করবে
max() Set এর max (বড়) Item টি return করবে।
min() Set এর সবচেয়ে min (ছোট) Item টি return করবে।
sorted() নতুন একটি sorted Set return করবে।
sum() Set এর সব Element এর যোগফল দেখাবে।

চলুন নিচে সবগুলোর একটা করে উদাহরণ দেখা যাক :

>>> mysets={4,1,9,3,2,6,7,8}
>>> len(mysets)
8
>>> max(mysets)
9
>>> min(mysets)
1
>>> sum(mysets)
40
>>> sorted(mysets)
[1, 2, 3, 4, 6, 7, 8, 9]
>>> any(mysets)
True
>>> all(mysets)
True
>>> 

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

2 thoughts on “Sets in Python

  1. sir, python er upor apnar koyekti free tutorial dekheci. ami python shikhte cai. course fee and course details ta janaben plz plz plz . remote area theke online a course korar kono bebostha ace kina?

Leave a Reply