Python Data Types Part-3: Tuple in Python

Last Updated on June 9, 2018 by

Python Tuple

Python Tuple

Python Language এ Tuple কি?

Python Language এ লিস্টের মতই আরেকটি ডাটা স্ট্রাকচার হচ্ছে Tuple. পার্থক্যটি হচ্ছে আপনি চাইলে List এর যেকোনো value পরিবর্তন করতে পারবেন কিন্তু tuple এর value পরিবর্তন করতে পারবেন না। অর্থাৎ , Tuple কে লিস্টের মত করে ইচ্ছামত পরিবর্তন, পরিবর্ধন করতে পারবেন না। Tuple এ প্রত্যেকটি Element/Item এর জন্য একটি number assign করা হয় যাকে index বা position বলা যায়। Tuple অনেকটা C, C++, Java এবং Python Tuple এর মতো। Tuple এ প্রথম index zero (0), তারপর 1 এবং এরপর ক্রমিক আকারে বাড়তে থাকে।আবার, লিস্ট যেমন তৈরি করতে হয় দুটো [] ব্র্যাকেট দিয়ে কিন্তু টাপল তৈরি করতে হয় () দিয়ে (যদিও ব্র্যাকেট ছাড়াও শুধু কমা চিহ্ন দিয়ে ভ্যালু গুলোকে আলাদা করেও টাপল তৈরি করা যায়)। মূলত , Data কে সুরক্ষিত রাখতেই টাপল(Tuple) ব্যবহৃত হয় এবং এটি Dynamically পরিবর্তন না হওয়ায় List এর তুলনায় দ্রুত কাজ করে।

পাইথনে কিভাবে Tuple তৈরী করবেন ?

পাইথনে Tuple তৈরী করা খুবই সহজ। দুটো প্যারেন্থেসিস ( ) এবং এর মধ্যে কমা দিয়ে আলাদা আলাদা Element/Item যুক্ত করে দিলেই (যদিও ব্র্যাকেট ছাড়াও শুধু কমা চিহ্ন দিয়ে ভ্যালু গুলোকে আলাদা করেও টাপল তৈরি করা যায়) Tuple তৈরী হয়ে যাবে। চলুন একসাথে কয়েকটি Tuple তৈরী করে ফেলি :

# empty tuple
# Output: ()
my_tuple = ()
print(my_tuple)

# tuple having integers
# Output: (1, 2, 3)
my_tuple = (1, 2, 3)
print(my_tuple)

# tuple with mixed datatypes
# Output: (1, "Hello", 3.4)
my_tuple = (1, "Hello", 3.4)
print(my_tuple)

# nested tuple
# Output: ("mouse", [8, 4, 6], (1, 2, 3))
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)

# tuple can be created without parentheses
# also called tuple packing
# Output: 3, 4.6, "dog"

my_tuple = 3, 4.6, "dog"
print(my_tuple)

# tuple unpacking is also possible
# Output:
# 3
# 4.6
# dog
a, b, c = my_tuple
print(a)
print(b)
print(c)

তবে tuple এ যদি শুধু একটা element থাকে , তাহলে আপনাকে অবশ্যয় tuple এর মধ্যে ঐ একটা element বা Item শেষে একটা comma (,) দিতে হবে। নিচের উদাহরণ দেখুন :

# only parentheses is not enough
# Output: <class 'str'>
my_tuple = ("hello")
print(type(my_tuple))

# need a comma at the end
# Output: <class 'tuple'>
my_tuple = ("hello",)  
print(type(my_tuple))

# parentheses is optional
# Output: <class 'tuple'>
my_tuple = "hello",
print(type(my_tuple))

কিভাবে Tuple এর Element গুলোতে access করবেন?

Tuple এর Element বা Item গুলোতে access করার জন্য আপনি List এর মতোই index বা position ব্যবহার করতে পারেন। নিচের উদাহরণে লক্ষ্য করুন :

my_tuple = ('Parvez','Erfan','Ramjan','Maksud','Imran','Taher')

# Output: 'Parvez'
print(my_tuple[0])

# Output: 'Taher'
print(my_tuple[5])

#Nested Tuple
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# nested index
# Output: 's'
print(n_tuple[0][3])

# nested index
# Output: 4
print(n_tuple[1][1])

উল্লেখ্য : Python Tuple এর index সব সময় integer হতে হবে।

Negative indexing (বিপরীত দিক থেকে indexing)

Python Tuple এ আপনি চাইলে negative indexing (বিপরীত দিক থেকে indexing) ও করতে পারেন। অর্থাৎ , index (-1) এর অর্থ দাঁড়ায় From Last One (Tuple এর পিছনের দিক থেকে প্রথম value), এবং index (-2) এর অর্থ দাঁড়ায় From Last Two(Tuple এর পিছনের দিক থেকে দ্বিতীয় value). ঠিক এইভাবে -3 এবং -4 ক্রম অনুসারে। নিচের উদাহরণ লক্ষ্য করুন :

my_tuple = ('Pervez','Emran','Rimon','Momtaz','Irfan','Taher')

# Output: 'Taher'
print(my_tuple[-1])

# Output: 'Parvez'
print(my_tuple[-6])

Python Tuple কে Slice করা ?

আপনি চাইলে পাইথনের Slicing Operator (:) দিয়ে Tuple এর নির্দিষ্ট অংশ Slicing করে নিতে পারেন। নিচের উদাহরণ দেখুন।

my_tuple = ('Parvez','Rakib','Omran','Galib','Riad','Anwar','Mahbub','Imran','Zaber')

# elements 2nd to 4th
# Output: ('Rakib', 'Omran', 'Galib')
print(my_tuple[1:4])

# elements beginning to 2nd
# Output: ('Parvez', 'Rakib')
print(my_tuple[:-7])

# elements 8th to end
# Output: ('Imran', 'Zaber')
print(my_tuple[7:])

# elements beginning to end
# Output: ('Parvez','Rakib','Omran','Galib','Riad','Anwar','Mahbub','Imran','Zaber')
print(my_tuple[:])

Tuple Unpacking

Tuple Unpacking এর মাধ্যমে একটি টাপলের (বা যেকোনো iterable) মধ্যে থাকা প্রত্যেকটি value কে আলাদা আলাদা নতুন Variable এ অ্যাসাইন করতে পারেন এক লাইন কোড লিখেই। নিচের উদাহরণ দেখুন:

>>> names=("Plabon","Shahriar","Bijon")
>>> a,b,c=names
>>> print (a)
Plabon
>>> print (b)
Shahriar
>>> print (c)
Bijon
>>> 

যদি এমন হয় যে একটি Tuple এর মধ্যে অবস্থিত অসংখ্য ভ্যালু এর মধ্যে অল্প কিছু আলাদা আলাদা ভ্যারিয়েবলে জমা রাখতে চান, এবং বাকি গুলো একটা নির্দিষ্ট variable এ রাখতে চান। তখন নিচের মত করে যেকোনো ভ্যারিয়েবলের সামনে * যুক্ত করে অবশিষ্ট যেকোনো সংখ্যক ভ্যালুকে এর মধ্যে জমা রাখতে পারবেন।

>>> a, b, *c, d = (1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> print(a)
1
>>> print (b)
2
>>> print (c)
[3, 4, 5, 6, 7, 8]
>>> print (d)
9
>>> 

ব্যাখ্যা: এখানে 1 জমা হচ্ছে a এর মধ্যে, 2 জমা হচ্ছে b এর মধ্যে কিন্তু এরপর থেকে বাকিগুলো জমা হচ্ছে c এর মধ্যে। আর ডান পাশের ইটারেবলের শেষ ভ্যালু জমা হচ্ছে বাম পাশের শেষ ভ্যারিয়েবল d এর মধ্যে।

Tuple এ পুরাতন আইটেম Update বা নতুন আইটেম add করা :

আমরা আগেই জেনেছি, List এর মত করে Tuple কে পরিবর্তন বা পরিবর্ধন করা যায়না। তবে tuple এর মধ্যে অবস্থিত যেকোনো list আপনি চাইলে সহজেই পরিবর্তন করতে পারবেন। নিচের উদাহরণ দেখুন :

my_tuple = (4, 2, 3, [6, 5])

# we cannot change an element
# If you uncomment line 8
# you will get an error:
# TypeError: 'tuple' object does not support item assignment

#my_tuple[1] = 9

# but item of mutable element can be changed
# Output: (4, 2, 3, [9, 5])
my_tuple[3][0] = 9
print(my_tuple)

# tuples can be reassigned
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
my_tuple = ('p','r','o','g','r','a','m','i','z')
print(my_tuple)

লক্ষ্য করুন, আপনি লাইন ৮ নম্বরকে যদি uncomment করেন , তাহলে আপনাকে error দেখাবে, কারণ এইটা tuple এর অন্তর্গত , কিন্তু লাইন নম্বর ১২ তে কোনো error দেখাবেনা। কারণ এটি একটি list

দুইটি tuple কে combine করা

আপনি দুইটি tuple কে combine করার জন্য plus (+) operator ব্যবহার করতে পারেন, যেটাকে আবার concatenation ও বলা হয়ে থাকে।

# Concatenation
# Output: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))

tuple Item কে repeat করা

একইভাবে Tuple এর মধ্যে Item গুলোকে repeat করার জন্য Multiplication (*) operator ব্যবহার করতে পারেন।

# Repeat
# Output: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

Tuple থেকে কোনো কিছু remove বা Delete করা

পাইথনে Tuple এর মধ্যে কোনো নির্দিষ্ট Item কে রিমুভ করতে না পারলেও আপনি পুরো tuple কেই ডিলিট বা রিমোভ করার জন্য del কীওয়ার্ডটি ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :

my_tuple = ('Parvez','Robin','Omran','Galib','Raihan','Amanullah','Mahfuz','Imran','Zafreen')

# can't delete items
# if you uncomment line 8,
# you will get an error:
# TypeError: 'tuple' object doesn't support item deletion

#del my_tuple[3]

# can delete entire tuple
# NameError: name 'my_tuple' is not defined
del my_tuple
my_tuple

পাইথনে Tuple এর Item সংখ্যা Count

পাইথনে Tuple এর Item গুলোর মধ্যে কোনো নির্দিষ্ট Item সংখ্যা কত, তা গণনা করার জন্য আপনি count Method ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :

my_tuple = ('a','p','p','l','e',)

# Count
# Output: 2
print(my_tuple.count('p'))

পাইথনে Tuple এর Item গুলোর মধ্যে কোনো নির্দিষ্ট Item এর index কত, তা জানার জন্য আপনি index Method ব্যবহার করতে পারেন। নিচের উদাহরণ দেখুন :

my_tuple = ('a','p','p','l','e',)

# Index
# Output: 3
print(my_tuple.index('l'))

Tuple এ কোনো Item আছে কিনা তা যাচাই করা :

my_tuple = ('a','p','p','l','e',)

# In operation
# Output: True
print('a' in my_tuple)

# Output: False
print('b' in my_tuple)

# Not in operation
# Output: True
print('g' not in my_tuple)

Iterate to Tuple’s Items

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

# Output: 
# Hello Jahir
# Hello Karim
for name in ('Jahir','Karim'):
     print("Hello",name) 

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

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

Built-in Functions with Tuple
Function Description
all() Tuple এর সব element যখন true, তখন এটি true return করবে।
any() Tuple এর যেকোনো element যখন true, তখন এটি true return করবে।
len() tuple এর Length return করবে
tuple() list, string, set, dictionary এই ধরণের iterable data type কে Tuple এ convert করবে।
max() Tuple এর max (বড়) Item টি return করবে।
min() Tuple এর সবচেয়ে min (ছোট) Item টি return করবে।
sorted() নতুন একটি sorted Tuple return করবে।
sum() Tuple এর সব Element এর যোগফল দেখাবে।

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

>>> my_tuple=[2,1,3,6,5,8,7,9,10,21]
>>> len(my_tuple)
10
>>> max(my_tuple)
21
>>> min(my_tuple)
1
>>> sum(my_tuple)
72
>>> sorted(my_tuple)
[1, 2, 3, 5, 6, 7, 8, 9, 10, 21]
>>> any(my_tuple)
True
>>> all(my_tuple)
True
>>> 

Leave a Reply