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

পাইথনে 'in' অপারেটর স্পিড আপ করা

in অপারেটর লিস্টে O(n) টাইম কমপ্লেক্সিটিতে কাজ করে (লিনিয়ার সার্চ)। বড় লিস্টে এটি ধীর।

সমাধান: সেট (set) বা ডিকশনারি (dict) ব্যবহার করুন

হ্যাশ-ভিত্তিক ডেটা স্ট্রাকচার (set, dict) লুকআপ ~O(1) টাইমে করে।

# ধীর - লিস্টে in
my_list = list(range(1000000))
%timeit 999999 in my_list  # ~5ms

# দ্রুত - সেটে in
my_set = set(range(1000000))
%timeit 999999 in my_set   # ~50ns (100,000x দ্রুত!)

ট্রেড-অফ বিবেচনা

  • লুকআপ: সেট/ডিক্ট O(1) - অনেক দ্রুত
  • ইনসারশন: সেট/ডিক্ট O(1) অ্যামোর্টাইজড, কিন্তু লিস্টের append() (O(1)) চেয়ে স্লো
  • মেমরি: সেট/ডিক্ট বেশি মেমরি নেয়
  • অর্ডার: পাইথন ৩.৭+ ডিক্ট অর্ডার প্রিজার্ভ করে, সেট অর্ডারড নয়

কখন কী ব্যবহার করবেন

  • ফ্রিকোয়েন্ট লুকআপ, র‍্যার ইনসারশন → Set/Dict
  • ফ্রিকোয়েন্ট ইনসারশন, র‍্যার লুকআপ → List
  • অর্ডার মেইনটেইন + লুকআপ → Dict (Python 3.7+) বা collections.OrderedDict
  1. পাইথনে ডিরেক্টরির কনটেন্ট লিস্ট করার পদ্ধতি

  2. পাইথনে cd কমান্ড চালানোর পদ্ধতি

  3. লোকালি ইনস্টল করা পাইথন মডিউলদের তালিকা পাওয়া

  4. পাইথন ফাংশন থেকে লিস্ট রিটার্ন করার পদ্ধতি