আপনি পাইথনে একটি লিস্ট বিল্ট-ইন reverse() বা reversed() মেথড ব্যবহার করে রিভার্স করতে পারেন। এই মেথডগুলো কোনো নতুন লিস্ট তৈরি না করেই লিস্টকে রিভার্স করবে। পাইথন reverse() এবং reversed() অরিজিনাল লিস্ট অবজেক্টের এলিমেন্টগুলোকে রিভার্স করবে।
একটি লিস্ট রিভার্স করা যেকোনো প্রোগ্রামিং ভাষার একটি সাধারণ অংশ। এই টিউটোরিয়ালে, আমরা সবচেয়ে ইফেক্টিভ পাইথন রিভার্স লিস্ট মেথডগুলো ভাঙে ফেলব।
ধরুন আপনার পাইথনে কাস্টমার নামের একটি লিস্ট আছে রিভার্স আ্যালফাবেটিক্যাল অর্ডারে কিন্তু আপনি সেগুলো আ্যালফাবেটিক্যাল অর্ডারে দেখতে চান। আপনাকে লিস্টটি রিভার্স করতে হবে। যদি আপনার একটি লম্বা লিস্ট থাকে এবং আপনি নিচে কী আছে সেটি দেখতে চান, আপনি শুধু স্ক্রোল ডাউন করতে পারেন। অথবা, আপনি ডেটা দ্রুত পেতে রিভার্স করতে পারেন।
পাইথন লিস্ট এবং লিস্ট স্লাইসিং: একটি রিফ্রেশার
পাইথনে, লিস্টগুলো আইটেমের অ্যারে। আপনার লিস্টে স্ট্রিং, বুলিয়ান, নম্বর, অবজেক্ট, বা পাইথনে যেকোনো অন্য ডেটা টাইপ থাকতে পারে, এবং আপনি যত চাই তত ধারণ করতে পারেন। অনেক ডেটা নিয়ে কাজ করার সময়, একাধিক ভেরিয়েবল ডিক্লেয়ার করার বদলে একটি লিস্ট ডিক্লেয়ার করা উপযোগী।
লিস্ট স্লাইসিং
আপনাকে লিস্ট স্লাইসিং জানতে হয় না একটি রিভার্স লিস্ট অপারেশন পারফর্ম করার জন্য, এটি হেল্পফুল হতে পারে।
পাইথনে একটি লিস্ট ডিক্লেয়ার করার পদ্ধতি এখানে:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"]
আমরা শুধু একটি ভেরিয়েবল, studentNames, ডিক্লেয়ার করেছি এবং একটি ভ্যালু লিস্ট—এই কেসে, ছাত্রদের নাম—ভেরিয়েবলে অ্যাসাইন করেছি।
যদি আমরা আমাদের লিস্ট থেকে একটি নির্দিষ্ট ভ্যালু পেতে চাই, আমরা এর ইন্ডেক্স নম্বর ব্যবহার করে লিস্টটি স্লাইস করতে পারি। এটা একসাথে অনেক কিছু, তাই চলুন এটিকে ভাঙে ফেলি। আমাদের লিস্টের প্রতিটি আইটেমের একটি ইন্ডেক্স ভ্যালু থাকে, ০ থেকে শুরু। আমরা সেগুলো ব্যবহার করে আমাদের লিস্ট থেকে একটি নির্দিষ্ট ভ্যালু পেতে পারি। এখানে আমাদের অ্যারের জন্য ইন্ডেক্স ভ্যালুগুলো:
| Hannah | Imogen | Lewis | Peter |
| 0 | 1 | 2 | 3 |
যদি আমরা আমাদের লিস্ট থেকে Imogen পেতে চাই, আমরা নিচের কোড ব্যবহার করব:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[1])
আমরা ছাত্রদের নামের সাথে আমাদের ভেরিয়েবল ডিক্লেয়ার করেছি। পরবর্তীতে, আমরা বললাম আমরা ইন্ডেক্স ভ্যালু 1 বিশিষ্ট লিস্ট আইটেম পেতে চাই। এই কেসে, ভ্যালু ছিল Imogen।
আমরা ইন্ডেক্স নম্বর পরিবর্তন করেও একটি রেঞ্জ পেতে পারি আরেকটি যোগ করে। এখানে একটি উদাহরণ:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[1:3])
আমাদের কোডের আউটপুট নিচের মত হবে:
["Imogen", "Lewis", "Peter"]
এখন আমরা লিস্ট স্লাইসিং-এর বেসিকস জানি, আমরা পাইথনে লিস্ট রিভার্স করার বিষয়ে আলোচনা শুরু করতে পারি।
পাইথন রিভার্স লিস্ট টিউটোরিয়াল
পাইথনে একটি লিস্ট রিভার্স করার তিনটি প্রধান উপায় আছে:
- স্লাইসিং ব্যবহার করে রিভার্স
- Reverse() ব্যবহার করে রিভার্স
- Reversed ব্যবহার করে রিভার্স
স্লাইসিং ব্যবহার করে রিভার্স
প্রথমটি হল আপনার লিস্ট রিভার্স করতে একটি স্লাইসিং ট্রিক ব্যবহার করা। এখানে পাইথন সিনট্যাক্স:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] print(studentNames[::-1])
আমাদের কোডের আউটপুট:
["Peter", "Lewis", "Imogen", "Hannah"]
আমাদের কোডে, আমরা আমাদের ভেরিয়েবল studentNames ডিক্লেয়ার করেছি, এবং তারপর একটি স্লাইস ফাংশন তৈরি করেছি যা লিস্টটি রিভার্স করবে। এটি লিস্ট স্লাইস করার একটি সাধারণ উপায়। কিন্তু এটি অদক্ষ হতে পারে কারণ এটি লিস্টের একটি কপি তৈরি করে, যা মেমরি নেয়। এছাড়া, এই ফাংশনটি লিস্ট রিভার্স করার অন্যান্য মেথডের চেয়ে একটু এডভান্সড হতে পারে।
Reverse() ব্যবহার করে রিভার্স
দ্বিতীয় অপশন যা আমরা নিতে পারি সেটি হল বিল্ট-ইন ফাংশন, reverse() ব্যবহার করা। reverse() মেথডটি কল করা যেতে পারে একটি লিস্ট অবজেক্টের কন্টেন্ট ইন-প্লেস রিভার্স করার জন্য। এর মানে আপনি কোনো নতুন লিস্ট তৈরি করবেন না। বদলে, আমরা অরিজিনাল লিস্ট অবজেক্টটি মডিফাই করব।
নিচের কোড reverse() একশনে পাইথন সিনট্যাক্স দেখায়:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] studentNames.reverse() print(studentNames)
আমাদের কোডের আউটপুট নিচের মত:
["Peter", "Lewis", "Imogen", "Hannah"]
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে reverse() ফাংশনটি নিজে একটি None ভ্যালু রিটার্ন করে। তাই, যদি আমরা আমাদের রিভাইজড লিস্ট পেতে চাই, আমাদের আবার এটা প্রিন্ট আউট করতে হবে, যেমন আমরা উপরে করেছি। এটি একটি লিস্ট রিভার্স করার একটি দক্ষ উপায় এবং যথেষ্ট মেমরি দরকার নয়, আমাদের উদাহরণের আলাদা। সিনট্যাক্সটিও স্পষ্ট এবং সিম্পল।
Reversed() ব্যবহার করে রিভার্স
তৃতীয় এবং চূড়ান্ত পদ্ধতি যা আমরা একটি লিস্ট রিভার্স করতে ব্যবহার করতে পারি সেটি হল reversed() ফাংশন ব্যবহার করা। এটি একটি বিল্ট-ইন ফাংশন যা আমরা একটি রিভার্স ইটারেটর তৈরি করে ব্যবহার করি আমাদের লিস্টের একটি রিভার্স অর্ডার তৈরি করতে পাইথনে। এর মানে একটি নতুন লিস্ট তৈরি হয় না, এবং আমাদের পুরনো লিস্ট মডিফাই হয় না। বদলে, ফাংশনটি আমাদের লিস্টের সব এলিমেন্টের মাধ্যমে সাইকেল করবে এবং সেগুলো রিভার্স অর্ডারে রিটার্ন করবে।
নিচের সিনট্যাক্স reversed() ফাংশন একশনে দেখায়:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"]
for i in reversed(studentNames):
print(i)
আমাদের কোডের আউটপুট:
"Peter" "Lewis" "Imogen" "Hannah"
যদি আমরা সত্যিকারের একটি রিভার্সড কপি লিস্ট তৈরি করতে চাই, আমরা এই কোড ব্যবহার করতে পারি:
studentNames = ["Hannah", "Imogen", "Lewis", "Peter"] list(reversed(studentNames))
এটি রিটার্ন করবে:
["Peter", "Lewis", "Imogen", "Hannah"]
এটি লিস্ট রিভার্স করার আরেকটি সহজ উপায়। এটি স্পষ্টভাবে দেখায় কী হচ্ছে। একটি নতুন লিস্ট তৈরি হচ্ছে যেটি আমাদের অন্য লিস্টের সব ভ্যালু অন্তর্ভুক্ত করবে, কিন্তু রিভার্সড।
উপসংহার
বিভিন্ন রিভার্স লিস্ট মেথড কীভাবে কাজ করে সেটি এটাই। এই টিউটোরিয়ালে, আমরা লিস্টের বেসিকস এক্সপ্লোর করেছি, যেগুলো আইটেমের অ্যারে যেমন স্ট্রিং বা অবজেক্ট, এবং ইন্ডেক্স ভ্যালু আলোচনা করেছি। আমরা একটি লিস্ট রিভার্স করার তিনটি মেথড আউটলাইন করেছি।
অবশ্য, আপনাকে শুধু একটি জানতে হবে। কিন্তু সকল তিনটি সম্পর্কে অবগত থাকা আপনাকে হেল্প করতে পারে যদি অন্যদের ভিন্ন পদ্ধতি থাকে এবং সেগুলো কোডে ব্যবহার করেন যেটি আপনি পড়েন।