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

পাইথন: লিস্টকে ইউনিটস ডিজিট (একক স্থানের সংখ্যা) অনুযায়ী সাজানো

সংখ্যার লিস্টকে একক স্থানের ডিজিট (units digit) অনুযায়ী সাজানোর জন্য কাস্টম কি ফাংশন, স্ট্রিং রূপান্তর এবং নেগেটিভ ইন্ডেক্সিং ব্যবহার করা হয়।

উদাহরণ


def unit_digit_key(n):
    """সংখ্যার একক স্থানের ডিজিট ফেরত দেয় (স্ট্রিং হিসেবে)"""
    return str(n)[-1]

my_list = [716, 134, 343, 24742]
print("মূল লিস্ট:", my_list)

# ইউনিট ডিজিট দেখানো
for n in my_list:
    print(f"  {n} → ইউনিট ডিজিট: {unit_digit_key(n)}")

# সর্ট
my_list.sort(key=unit_digit_key)

print("\nইউনিট ডিজিট অনুযায়ী সাজানো লিস্ট:")
print(my_list)

আউটপুট


মূল লিস্ট: [716, 134, 343, 24742]
  716 → ইউনিট ডিজিট: 6
  134 → ইউনিট ডিজিট: 4
  343 → ইউনিট ডিজিট: 3
  24742 → ইউনিট ডিজিট: 2

ইউনিট ডিজিট অনুযায়ী সাজানো লিস্ট: [24742, 343, 134, 716]

ব্যাখ্যা

  • str(n)[-1] — সংখ্যাকে স্ট্রিং বানিয়ে শেষ ক্যারেক্টার নেয়
  • স্ট্রিং কম্পারিজন: '2' < '3' < '4' < '6' (লেক্সিকোগ্রাফিক্যালি)
  • ফলাফল: ২ → ৩ → ৪ → ৬ অনুযায়ী সাজায়

ইন্টিজার মডুলো দিয়ে (দ্রুত, স্ট্রিং কনভারশন ছাড়া)


my_list.sort(key=lambda x: x % 10)
# একই ফলাফল: [24742, 343, 134, 716]

x % 10 সরাসরি একক স্থানের ডিজিট দেয় (নেগেটিভ সংখ্যার জন্য Python-এ `-123 % 10 = 7`, চাইলে `abs(x) % 10` ব্যবহার করুন)।

ডিসেন্ডিং ক্রম


my_list.sort(key=lambda x: x % 10, reverse=True)
# [716, 134, 343, 24742]

স্ট্রিং লিস্টের জন্য


str_list = ["123", "45", "6789", "0"]
str_list.sort(key=lambda s: s[-1])
# ['0', '45', '123', '6789'] → 0, 5, 3, 9
  1. পাইথনে টাপলের ভিতরের তালিকাগুলো সর্ট করা

  2. পাইথনে sort() মেথড

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

  4. পাইথনে স্ট্রিংয়ের লিস্ট সর্ট করা