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

পাইথনে লিস্ট রোটেট (rotate) করার বিভিন্ন পদ্ধতি

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

পদ্ধতি ১: স্লাইসিং (Slicing) - সবচেয়ে সহজ ও পাইথনিক


# বামে ৩ ঘূরানো (left rotate by 3)
test_list = [1, 4, 6, 7, 2]
test_list = test_list[3:] + test_list[:3]
# ফলাফল: [7, 2, 1, 4, 6]

# ডানে ৩ ঘূরানো (right rotate by 3) - ফিরে আসবে
test_list = test_list[-3:] + test_list[:-3]
# ফলাফল: [1, 4, 6, 7, 2]

পদ্ধতি ২: লিস্ট কমপ্রিহেনশন (List Comprehension)


test_list = [1, 4, 6, 7, 2]

# বামে ৩ ঘূরানো
test_list = [test_list[(i + 3) % len(test_list)] for i, x in enumerate(test_list)]
# ফলাফল: [7, 2, 1, 4, 6]

# ডানে ৩ ঘূরানো
test_list = [test_list[(i - 3) % len(test_list)] for i, x in enumerate(test_list)]
# ফলাফল: [1, 4, 6, 7, 2]

পদ্ধতি ৩: collections.deque এর rotate() মেথড - O(1) অপারেশন


from collections import deque

test_list = [1, 4, 6, 7, 2]

# বামে ৩ ঘূরানো (নেগেটিভ ভ্যালু)
dq = deque(test_list)
dq.rotate(-3)
test_list = list(dq)
# ফলাফল: [7, 2, 1, 4, 6]

# ডানে ৩ ঘূরানো (পজিটিভ ভ্যালু)
dq = deque(test_list)
dq.rotate(3)
test_list = list(dq)
# ফলাফল: [1, 4, 6, 7, 2]

পারফরম্যান্স তুলনা

  • Slicing: O(n) টাইম, O(n) স্পেস। ছোট লিস্টের জন্য খুব দ্রুত এবং পড়া সহজ।
  • List comprehension: O(n) টাইম, O(n) স্পেস। ফ্লেক্সিবল কিন্তু স্লাইসিং থেকে ধীর।
  • deque.rotate(): O(k) টাইম (k = রোটেশন স্টেপ), O(1) স্পেস (ইন-প্লেস)। বড় লিস্ট ও বারবার রোটেশনের জন্য সেরা।

সম্পূর্ণ আউটপুট উদাহরণ

Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3(back to original) : [1, 4, 6, 7, 2]
(সব পদ্ধতির আউটপুট একই)

কোনটি বেছে নেবেন?

  • সাধারণ ব্যবহারের জন্য: Slicing (সহজ, পাইথনিক)
  • বারবার রোটেশন বা বড় লিস্ট: deque.rotate() (দ্রুত, মেমরি দক্ষ)
  • কাস্টম লজিক বা কন্ডিশনাল রোটেশন: List comprehension
  1. পাইথনে লিস্ট এক্সটেন্ড করা (৫টি ভিন্ন উপায়)

  2. পাইথনে লিস্ট ক্লিয়ার করার বিভিন্ন উপায়

  3. পাইথনে লিস্ট را이트 রোটেট করা (n পজিশন)

  4. পাইথনে ডিকশনারির লিস্টকে ভ্যালু অনুযায়ী সর্ট করা