কম্পিউটার টিউটোরিয়াল

পাইথনে Deque


Deque মূলত স্ট্যাক এবং কিউ স্ট্রাকচারর একটি জেনারেলাইজেশন, যেখানে এটি বাম থেকে ডানে ইনিশিয়ালাইজ করা হয়। এটি লিস্ট অবজেক্ট ব্যবহার করে একটি deque তৈরি করে। এটি পপ এবং অ্যাপেন্ডের জন্য O(1) টাইম কমপ্লেক্সিটি প্রদান করে।

Deque একটি স্ট্যান্ডার্ড লাইব্রেরি ক্লাস, যা collections মডিউলে অবস্থিত।

এটি ব্যবহার করতে হলে প্রথমে collections স্ট্যান্ডার্ড লাইব্রেরি মডিউলটি ইম্পোর্ট করতে হবে।

import collections

এই বিভাগে আমরা Deque ক্লাসের কিছু ফাংশন দেখব।

Deque-এ অ্যাপেন্ডিং ফাংশনসমূহ

দুটি ধরনের অ্যাপেন্ড রয়েছে। append() মেথড ডানের শেষে এলিমেন্ট যোগ করতে ব্যবহৃত হয়, এবং appendleft() মেথড কিউর বামে এলিমেন্ট অ্যাপেন্ড করতে ব্যবহৃত হয়।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('124dfre')
print('Dequeue: ' + str(my_deque))

# ডানে x এবং বামে B ইনসার্ট
my_deque.append('x')
my_deque.appendleft('B')
print('Dequeue after appending: ' + str(my_deque))

আউটপুট

Dequeue: deque(['1', '2', '4', 'd', 'f', 'r', 'e'])
Dequeue after appending: deque(['B', '1', '2', '4', 'd', 'f', 'r', 'e', 'x'])

Deque-এ পপিং ফাংশনসমূহ

অ্যাপেন্ডের মতো, পপ ফাংশনও দুটি ধরনের। pop() মেথড কিউর ডানপাশের এলিমেন্ট রিমুভ করে ফেরত দেয়, এবং popleft() মেথড কিউর বামপাশের এলিমেন্ট রিমুভ করে ফেরত দেয়।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('124dfre')
print('Dequeue: ' + str(my_deque))

# ডান এবং বাম থেকে আইটেম ডিলিট
item = my_deque.pop()
print('Popped Item: ' + str(item))
item = my_deque.popleft()
print('Popped Item: ' + str(item))
print('Dequeue after pop operations: ' + str(my_deque))

আউটপুট

Dequeue: deque(['1', '2', '4', 'd', 'f', 'r', 'e'])
Popped Item: e
Popped Item: 1
Dequeue after pop operations: deque(['2', '4', 'd', 'f', 'r'])

Deque-এ আইটেম সংক্রান্ত ফাংশনসমূহ

Deque-এ কিছু ফাংশন রয়েছে যা আইটেম সংক্রান্ত তথ্য পাওয়ার জন্য ব্যবহৃত হয়। এখানে index(), count() ইত্যাদি ফাংশন রয়েছে। index মেথড একটি এলিমেন্টের প্রথম رخাফের ইনডেক্স পাওয়ার জন্য ব্যবহৃত হয়। যখন এলিমেন্টের সাথে কোনো আর্গুমেন্ট পাস করা হয় না, তবে এটি পুরো লিস্ট বেছে নেয়, যখন একটি নির্দিষ্ট সীমা নির্দিষ্ট করা হয়, তবে সে সীমার মধ্যে ইনডেক্স চেক করে। অন্যদিকে count() মেথড Deque-এ একটি আইটেমের ফ্রিকোয়েন্সি গণনা করে।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('AABCDDEFD')
print('Dequeue: ' + str(my_deque))

# D-এর ইনডেক্স খুঁজুন
print('Index of D:' + str(my_deque.index('D')))
print('Index of D in range 5 to 8 is: ' + str(my_deque.index('D', 5, 8)))

# رخাফের সংখ্যা গণনা
print('Occurrences of A: ' + str(my_deque.count('A')))
print('Occurrences of D: ' + str(my_deque.count('D')))

আউটপুট

Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D'])
Index of D:4
Index of D in range 5 to 8 is: 5
Occurrences of A: 2
Occurrences of D: 3

Deque-এ insert() এবং remove() ফাংশন

আমরা ইতিমধ্যে Deque-এ এলিমেন্ট ইনসার্ট এবং ডিলিট করার জন্য append এবং pop ফাংশন দেখেছি। ইনসারশন এবং ডিলিশনের সাথে সম্পর্কিত আরও দুটি মেথড রয়েছে। insert() মেথড একটি সংখ্যা ইনসার্ট করতে ব্যবহৃত হয়। এই কেসে আমরা ইনসার্ট করার জন্য ইনডেক্স দিতে পারি। তাই নির্দিষ্ট লোকেশনে আইটেম ইনসার্ট করা যায়। আর remove() মেথড একটি এলিমেন্টের প্রথম رخাফ রিমুভ করতে ব্যবহৃত হয়।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('AABCDDEFD')
print('Dequeue: ' + str(my_deque))

# ৫ এবং ৭ পজিশনে G এবং H অক্ষর ইনসার্ট
my_deque.insert(5, 'G')
my_deque.insert(7, 'H')
print('Dequeue after inserting: ' + str(my_deque))

# D অক্ষরের প্রথম رخাফ ডিলিট
my_deque.remove('D')
print('Dequeue after removing: ' + str(my_deque))

আউটপুট

Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D'])
Dequeue after inserting: deque(['A', 'A', 'B', 'C', 'D', 'G', 'D', 'H', 'E', 'F', 'D'])
Dequeue after removing: deque(['A', 'A', 'B', 'C', 'G', 'D', 'H', 'E', 'F', 'D'])

Deque-এ এক্সটেন্ডিং ফাংশন

এক্সটেন্ডিং ফাংশনগুলো Deque-এ একাধিক এলিমেন্ট যোগ করতে ব্যবহৃত হয়। আমরা লিস্ট, টাপলের মতো কলেকশন ব্যবহার করে একাধিক মান দিতে পারি। এক্সটেন্ডিং ফাংশন দুটি ধরনের। extend() মেথড ডানে এলিমেন্ট যোগ করতে ব্যবহৃত হয়, এটি পুনরাবৃত্তি append() ফাংশনের মতো। আর extendleft() মেথড বামে এলিমেন্ট যোগ করতে ব্যবহৃত হয়, এটি পুনরাবৃত্তি appendleft() ফাংশনের মতো।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('AABCDDEFD')
print('Dequeue: ' + str(my_deque))

# ডানে 1, 3, 5, 7 যোগ এবং বামে x, y, z যোগ
my_deque.extend([1, 3, 5, 7])
my_deque.extendleft(['x', 'y', 'z'])
print('Dequeue after Extending: ' + str(my_deque))

আউটপুট

Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D'])
Dequeue after Extending: deque(['z', 'y', 'x', 'A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D', 1, 3, 5, 7])

Deque-এ রিভার্সিং এবং রোটেটিং ফাংশন

reverse() মেথড ব্যবহার করে ডিকিউয়ার সিকোয়েন্স উল্টা করা যায়। আরেকটি মেথড রয়েছে rotate()। rotate মেথড ব্যবহার করে ডিকিউকে আর্গুমেন্ট হিসেবে দেওয়া সংখ্যা দিয়ে রোটেট করা যায়। আর্গুমেন্ট পজিটিভ হলে ডানে রোটেট হবে, এবং নেগেটিভ নম্বরে বামে রোটেট হবে।

উদাহরণ কোড

import collections as col

# প্রথমে কিউতে কিছু এলিমেন্ট ইনসার্ট করুন
my_deque = col.deque('AABCDDEFD')
print('Dequeue: ' + str(my_deque))
my_deque.reverse()
print('Deque after Reversing:' + str(my_deque))

# ডানে ৩ এলিমেন্ট রোটেট
my_deque.rotate(3)
print('Deque after rotating:' + str(my_deque))

আউটপুট

Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D'])
Deque after Reversing:deque(['D', 'F', 'E', 'D', 'D', 'C', 'B', 'A', 'A'])
Deque after rotating:deque(['B', 'A', 'A', 'D', 'F', 'E', 'D', 'D', 'C'])

  1. পাইথনে issuperset() ফাংশন

  2. পাইথনে Quine প্রোগ্রাম (স্ব-প্রजनনকারী কোড)

  3. পাইথনে Deque

  4. পাইথন কন্টেইনার ডেটা টাইপ