পাইথনে একটি তালিকার উপাদানগুলি এলোমেলো করুন

ব্যবসায়

আপনি যদি পাইথনে একটি তালিকার (অ্যারে) উপাদানগুলিকে এলোমেলোভাবে বাছাই করতে চান তবে স্ট্যান্ডার্ড লাইব্রেরির র্যান্ডম মডিউলটি ব্যবহার করুন।

দুটি ফাংশন আছে: shuffle(), যা এলোমেলোভাবে মূল তালিকাকে সাজায় এবং স্যাম্পল(), যা একটি নতুন এলোমেলোভাবে সাজানো তালিকা প্রদান করে। नमूना() স্ট্রিং এবং টিপলের জন্য ব্যবহার করা যেতে পারে।

  • আসল তালিকা এলোমেলো করুন:random.shuffle()
  • একটি নতুন, এলোমেলো তালিকা তৈরি করুন।:random.sample()
  • স্ট্রিং এবং tuples এলোমেলো
  • র্যান্ডম সংখ্যা বীজ ঠিক করুন

আপনি যদি এলোমেলো বা বিপরীত ক্রমে ক্রমবর্ধমান ক্রমানুসারে বাছাই করতে চান তাহলে নিচের নিবন্ধটি দেখুন।

আসল তালিকা এলোমেলো করুন:random.shuffle()

র্যান্ডম মডিউলে ফাংশন shuffle() এলোমেলোভাবে মূল তালিকা সাজাতে পারে।

import random

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]

একটি নতুন, এলোমেলো তালিকা তৈরি করুন।:random.sample()

র্যান্ডম মডিউলের ফাংশন নমুনা() মূল তালিকা পরিবর্তন না করেই এলোমেলোভাবে সাজানো একটি নতুন তালিকা তৈরি করতে ব্যবহার করা যেতে পারে।

sample() একটি ফাংশন যা এলোমেলোভাবে একটি তালিকা থেকে একটি উপাদান নির্বাচন করে এবং পুনরুদ্ধার করে। প্রথম আর্গুমেন্ট হল একটি তালিকা, এবং দ্বিতীয় আর্গুমেন্ট হল উপাদানের সংখ্যা পুনরুদ্ধার করা। বিস্তারিত জানার জন্য নিম্নলিখিত নিবন্ধ দেখুন.

যদি স্যাম্পল() দ্বারা নির্বাচন করা উপাদানের সংখ্যা তালিকার মোট উপাদানের সংখ্যা হয়, তাহলে আমরা একটি নতুন তালিকা পাব যেখানে সমস্ত উপাদান এলোমেলোভাবে সাজানো হয়েছে। তালিকার মোট উপাদানের সংখ্যা len() দ্বারা প্রাপ্ত হয়।

মূল বস্তু পরিবর্তন করা হবে না.

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]

print(l)
# [0, 1, 2, 3, 4]

স্ট্রিং এবং tuples এলোমেলো

স্ট্রিং এবং টিপল অপরিবর্তনীয়, তাই আপনি যদি মূল বস্তুটি পরিবর্তন করতে random.shuffle() ব্যবহার করেন তবে আপনি নিম্নলিখিত ত্রুটিটি পাবেন।
TypeError

s = 'abcde'

# random.shuffle(s)
# TypeError: 'str' object does not support item assignment

t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)

# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment

আপনি যদি একটি স্ট্রিং বা টিপল এলোমেলো করতে চান, random.sample() ব্যবহার করুন, যা একটি নতুন বস্তু তৈরি করে।

এমনকি যখন একটি স্ট্রিং বা টিপল একটি আর্গুমেন্ট হিসাবে নির্দিষ্ট করা হয়, random.sample() একটি তালিকা ফেরত দেয়, তাই এটিকে একটি স্ট্রিং বা টিপলে ফিরিয়ে আনার প্রয়োজন হয়।

একটি স্ট্রিংয়ের ক্ষেত্রে, এটি একটি একটি করে অক্ষরের তালিকা হবে। তাদের আবার একটি একক স্ট্রিংয়ে সংযুক্ত করতে, join() পদ্ধতি ব্যবহার করুন।

sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca

টিপলের জন্য, tuple() ব্যবহার করুন, যা একটি তালিকা থেকে একটি টিপল তৈরি করে।

tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)

র্যান্ডম সংখ্যা বীজ ঠিক করুন

র্যান্ডম মডিউলের ফাংশন seed() কে একটি নির্বিচারে পূর্ণসংখ্যা দেওয়ার মাধ্যমে, এলোমেলো সংখ্যার বীজ স্থির করা যেতে পারে এবং র্যান্ডম সংখ্যা জেনারেটর শুরু করা যেতে পারে।

একই বীজ দিয়ে শুরু করার পরে, এটি সর্বদা একইভাবে পুনর্বিন্যাস করা হয়।

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]