টাপল

বিভিন্ন ধরণের ডাটা-টাইপ একসাথে স্টোর (ধারণ) করার জন্য পাইথন আমাদের কে লিস্ট এর পাশাপাশি আরেক ধরনের ডাটা-টাইপ দিয়ে থাকে। তার নাম হচ্ছে “টাপল (Tuple)” । টাপলের সাথে লিস্টের পার্থক্য হল যে টাপলের উপাদানগুলি একবার এসাইন করা হলে পরিবর্তন করা যায় না কিন্তু লিস্টের উপাদান গুলি পরিবর্তন করা যায়।

আমরা প্রথম বন্ধনী () ব্যবহার করে টাপল তৈরী করতে পারি । প্রথম বন্ধনী এর মধ্যে মাধ্যমে আমরা ডাটা গুলোকে আবদ্ধ করে দিই ।

any_tuple = (1,2,3)

print(type(any_tuple))

# output
# <class 'tuple'>

 

টাপল থেকে ডাটা নিয়ে আসা

লিস্ট এর মতোই টাপল এর ও ইনডেক্সিং (indexing) আছে , আমরা সেই নির্দিষ্ট আইটেম এর ইনডেক্স (index) ধরে আইটেমটি নিয়ে আনতে পারবো

any_tuple = (1, 2, "abc", ( 10, 20 ), [ 3, 4 ] )

print(any_tuple[2]) # abc
print(any_tuple[-2]) # (10, 20)
print(any_tuple[3][1]) # 20

 

টাপল স্লাইসিং

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

any_tuple = (1, 2, 10, "abc", ( 10, 20 ), [ 3, 4 ], 50 , 100 )

print(any_tuple[0:3]) # (1, 2, 10)
print(any_tuple[6:]) # (50, 100)

টাপল এ একটিই উপাদান

যদি এমন হয় যে টাপল এ একটি মাত্র উপাদান রাখতে হবে, সেক্ষেত্রে মনে হয় যেন, টাপল-এর মধ্যে উপাদানটি রেখে দিলেই হবে –

any_tuple = (1)

print(type(any_tuple)) # <class 'int'>

any_tuple = ("a")

print(type(any_tuple)) # <class 'str'>

 

কি একটু অবাক হচ্ছি তাই না ? আসলে, একটি মাত্র উপাদান থাকলে আমাদের কে ওই উপাদানটির পরে কমা (,) দিলেই পাইথন সেটিকে টাপল হিসেবে বিবেচনা করে

 
any_tuple = (1,) 
print(type(any_tuple)) # <class 'tuple'>

any_tuple = ("a",) 
print(type(any_tuple)) # <class 'tuple'>

এই কমাকে আমরা ট্রেইলিং কমা , (trailing comma) বলবো

টাপল-এর উপাদান পরিবর্তন

টাপল আসলে পরিবর্তন অযোগ্য (Tuple is immutable) , অর্থাৎ এর কোনো ইনডেক্স এর ডাটা দ্বিতীয়বার পরিবর্তন বা আপডেট করা যায় না ,

any_tuple = (1,2,3)
any_tuple[1] = 10

এই কোডটি রান করলে , নিচের এরর দিবে

Traceback (most recent call last):
File "<string>", line 2, in <module>
TypeError: 'tuple' object does not support item assignment

তবে ভিতরে লিস্ট থাকলে কিন্তু ওই লিস্ট এর ডাটা চেঞ্জ করতে পারবো যেমন ,

any_tuple = (1,[10,20],3)
any_tuple[1][0] = "changed" 

print(any_tuple)

টাপল-এর কিছু মেথড

নিচের টাপলটি লক্ষ্য করি

any_tuple = (1, 2, 3, 1, 7, 4, 1, 1, 5)

দৈর্ঘ্য বের করা print( len( any_tuple ) ) 9
একটি উপাদান কতবার আছে print( any_tuple.count(1) ) 4
একটি উপাদান কত নম্বর ইনডেক্স এ আছে print( any_tuple.index(2) ) 1

 

এখন মনে প্রশ্ন আসতে পারে আমরা লিস্ট থাকতে টাপল কেন ব্যবহার করব ? এর উত্তর হচ্ছে :
টাপল এর মেমোরি ইফিসিয়েন্সি লিস্ট থেকে বেশি। এছাড়াও যখন আমরা এমন ডাটা নিয়ে কাজ করব যেগুলি অপরিবর্তনীয় তখন লিস্টের থেকে টাপল ব্যবহার করা উত্তম ।

উদাহরন

উদাহরন ১

my_tuple = ('v','i','v','a','s','o','f','t')


#output ('v', 'a', 's')
print(my_tuple[2:5])




# tuple concatenation
another = ('0','1')
my_tuple = my_tuple + another
print((my_tuple))


# count an item
print(my_tuple.count('v'))


# index of item
print(my_tuple.index('a'))


# it is a best practise to trail e 'comma' if there's a single element of the tuple
tup = ('one',)
tup2 = ('first',)

উদাহরন ২

tuple1 = (10, 20, 30, 40) 
# unpack tuple into 4 variables 
a, b, c, d = tuple1 
print(a) 
print(b) 
print(c) 
print(d) 
## Output: 
## tuple1 = (10, 20, 30, 40) 
# Your code 
## print(a) 
# should print 10 
## print(b) 
# should print 20 
## print(c) 
# should print 30 
## print(d) 
# should print 40

উদাহরন ৩

tuple1 = (45, 45, 45, 45) 
## Check if all items in the tuple are the same 
def check(t):
    return all(i == t[0] for i in t)
tuple1 = (45, 45, 45, 45)
print(check(tuple1)) 
##Output: 
##True

উদাহরন ৪

t = ('T', 'u', 't', 'o', 'r', ' ', 'J', 'o', 'e', 's',8)
print('t' in t)
print(8 in t)
print('x' in t)
print(2 in t)
## Output
## True
## True
## False
## False

উদাহরন ৫

t = (('a', 53), ('b', 37), ('c', 23), ('d', 1), ('e', 18)) 
t = tuple(sorted(list(t), key=lambda x: x[1])) 
print(t) 

## Output 
## (('d', 1), ('e', 18), ('c', 23), ('b', 37), ('a', 53)

 

 

এসো নিজে করি
* একটি লিস্টকে টাপলে রূপান্তর করুন ।
* tup = (True, [10, 20,[False], 30], (5, 15, 25)) -> ‘False’ কে এক্সেস করুন
* কোন প্রকার লুপ ব্যাবহার না করে একটি টাপলে ডুপ্লিকেট আইটেম আছে কিনা বের করবেন কিভাবে ? [লেসন-১২ শেষ করে এসে এই প্রশ্নের উত্তর করতে পারবেন]
* একটি tuple  কে একটি string রূপান্তর করতে একটি পাইথন প্রোগ্রাম লিখুন
* Tuple একটি list এর মধ্যে সংরক্ষিত প্রতিটি tuple সমস্ত উপাদানের যোগফল গণনা করার জন্য একটি পাইথন প্রোগ্রাম লিখুন
ইন্টারভিউ প্রশ্নোত্তর
গুরুত্বপূর্ন প্রশ্নসমুহ

 

* list & tuple এর মধ্যে পার্থক্য কোথায় ?
* একটি টাপল কিভাবে আপডেট করবেন ?
* টাপল এর কয়টি মেথড আছে এবং কি কি ?

 

python3
my_tup = (10,20,[30,40])
my_tup[2][0] = 0

 

 

 

* এই কোডটি এরর দিবে কি ?

*আপনি কিভাবে একটি tuple এর উপস্থিতিতে সর্বনিম্ন এবং সর্বোচ্চ মান খুঁজে পেতে পারেন?