Python Data Types Part-4: Sets in Python

Last Updated on June 9, 2018 by

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 প্রদর্শন করবে।

কিভাবে পাইথন 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)

পাইথনে 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}

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
>>> 
2 comments to “Python Data Types Part-4: 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