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

পাইথনে লিস্টে খোঁজা: বিগিনার গাইড

পাইথন লিস্টে একটি আইটেম কীভাবে খুঁজবেন? এটি একটি প্রশ্ন যা সব পাইথন কোডারর কখনো ন কখনো এনকাউন্টার করে। সৌভাগ্যবশত, ভাষাটি একাধিক উপায় অফার করে যার মাধ্যমে আপনি একটি লিস্টে একটি আইটেম খুঁজে পেতে পারেন, যেমন in অপারেটর বা একটি লিনিয়ার সার্চ ব্যবহার করে।

এই গাইডে, আমরা একটি লিস্টে আইটেম খুঁজে বের করার চারটি মেথড নিয়ে আলোচনা করব। আমরা প্রতিটি মেথডের একটি উদাহরণের মাধ্যমে যাব যাতে আপনি শিখতে পারেন সেগুলো কীভাবে কাজ করে।

"in" ব্যবহার করে পাইথনে লিস্টে খোঁজা

পাইথনে in নামে একটি স্পেশাল অপারেটর আছে। এই অপারেটরটি চেক করে কোনো ভ্যালু একটি লিস্টে আছে কিনা। এই অপারেটরটিকে কখনো কখনো "মেম্বারশিপ অপারেটর" বলা হয় কারণ এটি চেক করে কোনো ভ্যালু একটি লিস্টের মেম্বার কিনা।

এই উদাহরণে, আমরা একটি জুতা দোকান চালাই এবং আমরা চেক করতে চাই কোনো নির্দিষ্ট জুতা স্টকে আছে কিনা। এটি করার একটি উপায় হল in অপারেটর ব্যবহার করা।

শুরু করি জুতার একটি লিস্ট ডিফাইন করে: 

shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"]

পরবর্তীতে, আমরা একজন ইউজারকে খুঁজতে চাওয়া জুতাটি ইনসার্ট করতে বলি:

to_find = input("What shoe are you looking for? ")

আমরা একটি input() স্টেটমেন্ট ব্যবহার করে জুতার নাম কালেক্ট করি। পরবর্তীতে, আমরা একটি "if" স্টেটমেন্ট ব্যবহার করে চেক করি ইউজার যে জুতাটি ইনপুট দিয়েছে সেটি আমাদের জুতার লিস্টে আছে কিনা:

if to_find in shoes:
    print("{} shoes are in stock.".format(to_find))
else:
    print("{} shoes are not in stock.".format(to_find))

আমাদের if স্টেটমেন্ট এক্সিকিউট হবে যদি ইউজার যে জুতাটি ইনপুট দিয়েছে সেটি আমাদের লিস্টে পাওয়া যায়। অন্যথায়, else স্টেটমেন্টটি রান করবে। আমাদের কোড ট্রাই করুন:

What shoe are you looking for? Adidas Runfalcon
Adidas Runfalcon shoes are in stock.

আমাদের কোড সফলভাবে শনাক্ত করল যে "Adidas Runfalcon" জুতাগুলো স্টকে আছে। এতে আমাদের if স্টেটমেন্ট এক্সিকিউট হয়।

লিনিয়ার সার্চ ব্যবহার করে পাইথনে লিস্টে খোঁজা

একটি লিনিয়ার সার্চ হল একটি সিম্পল সার্চিং অ্যালগরিদম যা একটি লিস্টে একটি আইটেম খুঁজে বের করে। একটি লিনিয়ার সার্চ একটি লিস্টের একটি এন্ড থেকে শুরু হয় এবং একটি ভ্যালুকে লিস্টের প্রতিটি এলিমেন্টের সাথে তুলনা করে। যদি वो ভ্যালু লিস্টে থাকে, একটি লিনিয়ার সার্চ সেই আইটেমের পজিশন রিটার্ন করে।

শুরু করি আমাদের লিনিয়ার সার্চ পারফর্ম করার একটি ফাংশন লিখে:

def linear_search(array, to_find):
    for i in range(0, len(array)):
        if array[i] == to_find:
            return i
    return -1

আমাদের কোড একটি "for" লুপ ব্যবহার করে "array" লিস্টের প্রতিটি আইটেমের মাধ্যমে ইটারেট করে। যদি সেই আইটেমটি পাওয়া যায়, সেই আইটেমের ইন্ডেক্স পজিশন মেইন প্রোগ্রামে রিটার্ন হয়। যদি পুরো লিস্ট সার্চ করার পর আইটেমটি না পাওয়া যায়, -1 মেইন প্রোগ্রামে রিটার্ন হয়।

চলুন আমাদের মেইন প্রোগ্রামে যাই এবং আমাদের ফাংশন কল করি:

shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"]
to_find = input("What shoe are you looking for? ")
found = linear_search(shoes, to_find)

এই কোডটি ইউজার থেকে সে যে জুতাটি খুঁজছেন সেটি পড়ে। তারপর, আমাদের কোড linear_search ফাংশন কল করে সেটি লিস্টে উপস্থিত কিনা সেটি খুঁজে বের করতে।

অবশেষে, আমরা একটি if স্টেটমেন্ট ব্যবহার করে একজন ইউজারকে জানিয়ে দিই জুতাটি পাওয়া গেছে কিনা:

if found != -1:
    print("{} shoes are in stock.".format(to_find))
else:
    print("{} shoes are not in stock.".format(to_find))

যদি আমাদের linear_search ফাংশন -1 রিটার্ন করে, এতে বোঝায় একটি আইটেম একটি লিস্টে পাওয়া যায়নি। আমাদের if স্টেটমেন্ট রান করবে যদি linear_search ফাংশন tarafından রিটার্ন করা ভ্যালু -1-এর সমান নয়। যদি ভ্যালু -1-এর সমান হয়, else স্টেটমেন্টটি রান করবে।

আমাদের কোড ট্রাই করুন:

What shoe are you looking for? Adidas Samba
Adidas Samba shoes are not in stock.

আমাদের কোড আমাদের লিস্টে Adidas Samba জুতা খুঁজে পায়নি।

index() ব্যবহার করে পাইথনে লিস্টে খোঁজা

index() বিল্ট-ইন ফাংশন আপনাকে একটি লিস্টে একটি আইটেমের ইন্ডেক্স পজিশন খুঁজে বের করতে দেয়। index() ব্যবহার করে একটি লিস্টে একটি জুতার লোকেশন খুঁজে বের করার একটি প্রোগ্রাম লিখি।

শুরু করি জুতার একটি লিস্ট ডিফাইন করে। আমরা একজন ইউজারকে একটি জুতা ইনসার্ট করতে বলি যেটি আমাদের প্রোগ্রাম আমাদের জুতার লিস্টে সার্চ করবে:

shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"]
to_find = input("What shoe are you looking for? ")

পরবর্তীতে, আমরা index() মেথড ব্যবহার করে সেই জুতার লিস্ট ইন্ডেক্স পজিশন রিটার্ন করি:

try:
    found = shoes.index(to_find)
    print("{} shoes are in stock. They are at index position {} in the list of shoes.".format(to_find, found))
except:
    print("{} shoes are not in stock.".format(to_find))

index() মেথড একটি ValueError রিটার্ন করে যদি একটি আইটেম একটি লিস্টে না পাওয়া যায়। সেটিই কারণ আমরা এটি একটি "try...except" ব্লকের অংশ হিসেবে ব্যবহার করি।

যদি একটি জুতা না পাওয়া যায়, একটি ValueError উঠে। এই পয়েন্টে, "except" ব্লক রান করবে। যদি একটি জুতা পাওয়া যায়, "try" ব্লক সফলভাবে এক্সিকিউট হবে।

আমাদের কোড রান করুন:

What shoe are you looking for? Adidas Gazelle
Adidas Gazelle shoes are in stock. They are at index position 2 in the list of shoes.

আমাদের কোড সফলভাবে শনাক্ত করল যে Adidas Gazelle জুতাগুলো স্টকে আছে। আমাদের প্রোগ্রাম আমাদের লিস্টে সেই জুতাগুলো কোন পজিশনে স্টোর করা আছে সেটিও বলে দিল।

লিস্ট কম্প্রিহেনশন ব্যবহার করে পাইথনে লিস্টে খোঁজা

আপনি একটি লিস্টে একাধিক আইটেম খুঁজে বের করতে পারেন যেগুলো একটি নির্দিষ্ট কন্ডিশন মেট করে লিস্ট কম্প্রিহেনশন ব্যবহার করে।

আমাদের একটি জুতার লিস্ট আছে এবং আমরা শুধু সেগুলো রিটার্ন করতে চাই যেগুলো অ্যাডিডাস ব্র্যান্ডেড। আমরা এটি লিস্ট কম্প্রিহেনশন ব্যবহার করে করতে পারি। শুরু করি জুতার একটি লিস্ট ডিফাইন করে:

shoes = ["Nike PG 4", "Adidas Ultraboost", "Adidas Gazelle", "Nike Air Max Verona"]

পরবর্তীতে, আমরা একটি লিস্ট কম্প্রিহেনশন লিখি যা "Nike" শব্দটি কন্টেইন করে এমন সব জুতা রিট্রিভ করে। লিস্ট কম্প্রিহেনশন একটি ফর লুপের মতো সিনট্যাক্স ব্যবহার করে:

nike_shoes = [shoe for shoe in shoes if "Nike" in shoe]
print(nike_shoes)

লিস্ট এক্সপ্রেশন "shoe" লিস্টের প্রতিটি জুতার মাধ্যমে ইটারেট করে। এক্সপ্রেশনটি চেক করে প্রতিটি জুতার নামে Nike শব্দটি আছে কিনা। যদি থাকে, সেই জুতাটি "nike_shoes" লিস্টে অ্যাড হয়। অন্যথায়, কিছুই হয় না।

আমাদের কোড রান করি:

['Nike PG 4', 'Nike Air Max Verona']

আমাদের কোড একটি নাইক জুতার লিস্ট রিটার্ন করল। 

উপসংহার

একটি লিস্টে আইটেম খুঁজে বের করার অনেক উপায় আছে। সবচেয়ে জনপ্রিয় মেথডগুলো হল:

  • in মেম্বারশিপ অপারেটর ব্যবহার করা
  • একটি লিনিয়ার সার্চ ব্যবহার করা
  • index() মেথড ব্যবহার করা
  • একটি লিস্ট কম্প্রিহেনশন ব্যবহার করা

এখন আপনি একটি পাইথন লিস্টে আইটেম সার্চ করার জন্য এক্সপার্ট কোডারের মতো রেডি!

  1. পাইথন - লিস্টে একটি মানর ইনডেক্সগুলো খুঁজে বের করার পদ্ধতিগুলো

  2. পাইথনে লিস্টে সবচেয়ে বেশি ফ্রিকোয়েন্ট এলিমেন্ট বের করা (Find most frequent element)

  3. পাইথনে লিস্টের আকার বের করা

  4. পাইথনে লিস্টের গড় (Average) বের করা