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

পাইথনে সবচেয়ে বড় ও ছোট আইটেম খুঁজে বের করার পদ্ধতি

এই আর্টিকেলটি ডেভেলপারদের জন্য যারা পাইথনে সর্বোচ্চ বা সর্বনিম্ন মান বের করতে চান। এখানে кільটি মেথড আলোচনা করা হয়েছে এবং সেরা পদ্ধতি নির্ণয় করা হয়েছে।

মেথড ১: লিস্টে স্লাইসিং অ্যাপ্রোচ

যদি শুধু একটিই সবচেয়ে ছোট বা বড় আইটেম দরকার হয় (N=1), তবে min() এবং max() ফাংশনই দ্রুততম।

import random
random_list = random.sample(range(1, 10), 9)
# আউটপুট: [2, 4, 5, 1, 7, 9, 6, 8, 3]

N=1 এর জন্য

min(random_list)  # 1
max(random_list)  # 9

N=3 এর জন্য (৩টি ছোট ও বড় আইটেম)

যদি N কালেকশনের আকারের কাছাকাছি হয়, তবে সর্ট করে স্লাইস নেওয়া দ্রুত।

sorted(random_list)[:3]   # [1, 2, 3] (৩টি ছোট)
sorted(random_list)[-3:]  # [7, 8, 9] (৩টি বড়)

মেথড ২: heapq মডিউল ব্যবহার

heapq মডিউলের nlargest() এবং nsmallest() ফাংশন খুবই দক্ষ।

import heapq
heapq.nsmallest(3, random_list)  # [1, 2, 3]
heapq.nlargest(3, random_list)   # [9, 8, 7]

জটিল ডেটা (যেমন ডিকশনারির লিস্ট) এর জন্য key প্যারামিটার ব্যবহার করা যায়।

grandslams = [
    {'name': 'Roger Federer', 'titles': 20},
    {'name': 'Rafael Nadal', 'titles': 19},
    {'name': 'Novak Djokovic', 'titles': 17},
    {'name': 'Andy Murray', 'titles': 3},
]

# কম টাইটেল 가진 ৩ খেলোয়াড়
heapq.nsmallest(3, grandslams, key=lambda s: s['titles'])
# [{'name': 'Andy Murray', 'titles': 3}, ...]

# সবচেয়ে বেশি টাইটেল 가진 ৩ খেলোয়াড়
heapq.nlargest(3, grandslams, key=lambda s: s['titles'])
# [{'name': 'Roger Federer', 'titles': 20}, ...]

ডেটাফ্রেম থেকে N সবচেয়ে বড়/ছোট মান বের করা

CSV ফাইল থেকে ডেটাফ্রেম তৈরি করে দুটি পদ্ধতিতে করা যায়:

পদ্ধoti ১: sort_values() + head()

import pandas as pd
import io

data = """player,titles
Djokovic,17
Nadal,19
Federer,20
Murray,3"""
df = pd.read_csv(io.StringIO(data), index_col="player")

df.sort_values("titles").head(3)      # nsmallest
df.sort_values("titles", ascending=False).head(3)  # nlargest

পদ্ধতি ২: সরাসরি nsmallest()/nlargest() মেথড (বेहতর ও পঠনীয়)

df.nsmallest(3, columns="titles")
df.nlargest(3, columns="titles")

উপসংহার

  • N=1 হলে min()/max() দ্রুততম।
  • N ছোট হলে nlargest()/nsmallest() সেরা।
  • N কালেকশনের আকারের কাছাকাছি হলে সর্ট করে স্লাইস নেওয়া ভালো।
  • nlargest()/nsmallest() আডাপ্টিভ অপ্টিমাইজেশন করে।
  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  2. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  3. Windows 10-এ সবচেয়ে বড় ফাইলগুলো খুঁজে বের করুন ডিস্ক স্পেস মুক্ত করতে

  4. উইন্ডোজ ১০-এ সবচেয়ে বড় ফাইলগুলো খুঁজে বের করে মুছে ফেলার দ্রুত গাইড