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

পাইথনে লিস্ট থেকে ডুপ্লিকেট (duplicate) মুছে ফেলার ৫টি পদ্ধতি

লিস্ট পাইথনের সবচেয়ে গুরুত্বপূর্ণ কন্টেইনার। ডুপ্লিকেট রিমুভ (remove duplicates) করা একটি সাধারণ অপারেশন। এখানে ৫টি ভিন্ন পদ্ধতি দেওয়া হলো।

পদ্ধতি ১: নেইভ (Naive) মেথড - লুপ + চেক


test_list = [1, 3, 5, 6, 3, 5, 6, 1]
res = []
for i in test_list:
    if i not in res:
        res.append(i)
# ফলাফল: [1, 3, 5, 6]

সময় জটিলতা: O(n²) - বড় লিস্টের জন্য ধীর।

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


test_list = [1, 3, 5, 6, 3, 5, 6, 1]
res = []
[res.append(x) for x in test_list if x not in res]
# ফলাফল: [1, 3, 5, 6]

নেইভ মেথডের কনসাইস (concise) ভার্সন, পারফরম্যান্স একই।

পদ্ধতি ৩: set() ব্যবহার - সবচেয়ে দ্রুত কিন্তু অর্ডার মেইনটেইন করে না


test_list = [1, 5, 3, 6, 3, 5, 6, 1]
test_list = list(set(test_list))
# ফলাফল: [1, 3, 5, 6] (অর্ডার পরিবর্তিত হতে পারে)

সময় জটিলতা: O(n) - সবচেয়ে দ্রুত। কিন্তু অর্ডার গ্যারান্টি নেই (পাইথন ৩.৭+ এ ইনসারশন অর্ডার মেইনটেইন করে)।

পদ্ধতি ৪: লিস্ট কমপ্রিহেনশন + enumerate() - অর্ডার সংরক্ষণ


test_list = [1, 5, 3, 6, 3, 5, 6, 1]
res = [i for n, i in enumerate(test_list) if i not in test_list[:n]]
# ফলাফল: [1, 5, 3, 6] (প্রথম-occurrence অর্ডার সংরক্ষিত)

প্রথমবার দেখা এলিমেন্টগুলোই রাখে। O(n²) টাইম।

পদ্ধতি ৫: collections.OrderedDict.fromkeys() - অর্ডার সংরক্ষণ + দ্রুত


from collections import OrderedDict

test_list = [1, 5, 3, 6, 3, 5, 6, 1]
res = list(OrderedDict.fromkeys(test_list))
# ফলাফল: [1, 5, 3, 6]

সময় জটিলতা: O(n)। পাইথন ৩.৭+ এ dict.fromkeys() দিয়েও হয় (নরমাল dict ও ইনসারশন অর্ডার মেইনটেইন করে)।

তুলনা সারসংক্ষেপ

পদ্ধতিটাইম কমপ্লেক্সিটিঅর্ডার সংরক্ষণস্পেস
Naive loopO(n²)হ্যাঁO(n)
List comprehensionO(n²)হ্যাঁO(n)
set()O(n)না (৩.৭+ এ হ্যাঁ)O(n)
enumerate() + list compO(n²)হ্যাঁO(n)
OrderedDict/dict.fromkeys()O(n)হ্যাঁO(n)

সেরা প্র্যাক্টিস

  • অর্ডার গুরুত্বপূর্ণ না হলে: list(set(lst)) (সবচেয়ে দ্রুত)
  • অর্ডার রাখতে হলে (Python 3.7+): list(dict.fromkeys(lst))
  • পুরানো পাইথন ভার্সনে: list(OrderedDict.fromkeys(lst))

সম্পূর্ণ আউটপুট

The original list is : [1, 3, 5, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 3, 5, 6]
The original list is : [1, 3, 5, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 3, 5, 6]
The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 3, 5, 6]
The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 5, 3, 6]
The original list is : [1, 5, 3, 6, 3, 5, 6, 1]
The list after removing duplicates : [1, 5, 3, 6]
  1. পাইথনে একটি লিস্ট থেকে ইনডেক্স লিস্ট ব্যবহার করে এলিমেন্ট রিমুভ কীভাবে করবেন?

  2. পাইথনে ইনডেক্স দিয়ে লিস্ট থেকে এলিমেন্ট রিমুভ কীভাবে করবেন?

  3. পাইথনে লিস্ট থেকে একটি অবজেক্ট রিমুভ করার পদ্ধতি

  4. জাভা সহজে: ArrayList থেকে ডুপ্লিকেট আইটেম রিমুভ করুন