Python मा सूचीबाट तत्वहरू अनियमित रूपमा चयन गर्न छनौट, नमूना र विकल्पहरू।

व्यापार

पाइथन मानक पुस्तकालयको अनियमित मोड्युलमा प्रकार्य विकल्प (), नमूना (), र विकल्पहरू () लाई अनियमित रूपमा सूची, टपल, स्ट्रिङ, वा अन्य अनुक्रम वस्तु (अनियमित नमूना) बाट तत्वहरू चयन र पुन: प्राप्त गर्न प्रयोग गर्न सकिन्छ।

choice() ले एकल तत्व, नमूना() र विकल्प() ले बहु तत्वहरूको सूची प्राप्त गर्दछ। नमूना() कुनै डुप्लिकेट बिना पुन:प्राप्ति योग्य निकासी हो, विकल्पहरू () नक्कलहरूको साथ पुन: प्राप्ति योग्य निकासी हो।

निम्न जानकारी यहाँ प्रदान गरिएको छ।

  • अनियमित रूपमा एउटा तत्व चयन गर्नुहोस्।:random.choice()
  • अनियमित रूपमा धेरै तत्वहरू चयन गर्नुहोस् (कुनै नक्कल छैन):random.sample()
  • अनियमित रूपमा धेरै तत्वहरू चयन गर्नुहोस् (डुप्लिकेटहरूसँग):random.choices()
  • अनियमित संख्या बीज ठीक गर्नुहोस्

अनियमित रूपमा एउटा तत्व चयन गर्नुहोस्।:random.choice()

अनियमित मोड्युलको प्रकार्य छनौट (), एउटा तत्व अनियमित रूपमा सूचीबाट चयन गरिएको छ र पुन: प्राप्त गर्न सकिन्छ।

import random

l = [0, 1, 2, 3, 4]

print(random.choice(l))
# 1

त्यहि tuples र तार मा लागू हुन्छ। स्ट्रिङको अवस्थामा, एकल क्यारेक्टर चयन गरिएको छ।

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b

यदि खाली सूची, टपल, वा स्ट्रिङ तर्कको रूपमा निर्दिष्ट गरिएको छ भने त्रुटि।

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence

अनियमित रूपमा धेरै तत्वहरू चयन गर्नुहोस् (कुनै नक्कल छैन):random.sample()

अनियमित मोड्युलको प्रकार्य नमूना() संग, तपाइँ एक सूचीबाट अनियमित मा धेरै तत्वहरू प्राप्त गर्न सक्नुहुन्छ। त्यहाँ तत्वहरूको कुनै नक्कल छैन (नन-रिकभरी निकासी)।

पहिलो तर्क एउटा सूची हो, र दोस्रो तर्क पुन: प्राप्त गर्न तत्वहरूको संख्या हो। सूची फिर्ता गरिएको छ।

import random

l = [0, 1, 2, 3, 4]

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

print(type(random.sample(l, 3)))
# <class 'list'>

यदि दोस्रो तर्क 1 मा सेट गरिएको छ भने, एउटा तत्व सहितको सूची पनि फर्काइन्छ; यदि यो ० मा सेट गरिएको छ भने, सूची खाली छ। यदि दोस्रो तर्क 1 हो भने, एउटा तत्व भएको सूची फर्काइन्छ; यदि यो ० हो भने, खाली सूची फर्काइन्छ; यदि पहिलो तर्क सूचीमा तत्वहरूको संख्या भन्दा बढी छ भने, त्रुटि हुन्छ।

print(random.sample(l, 1))
# [3]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative

यदि पहिलो तर्क टपल वा स्ट्रिङ हो भने, के फर्काइन्छ अझै पनि सूची हो।

print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['b', 'e']

यदि तपाइँ टपल वा स्ट्रिङमा फर्कन चाहनुहुन्छ भने, tuple(), join() प्रयोग गर्नुहोस्।

print(tuple(random.sample(('xxx', 'yyy', 'zzz'), 2)))
# ('xxx', 'yyy')

print(''.join(random.sample('abcde', 2)))
# dc

ध्यान दिनुहोस् कि मान न्याय गरिएको छैन, त्यसैले यदि मूल सूची वा टपलमा समान मानका तत्वहरू छन् भने, त्यहाँ समान मान चयन हुने सम्भावना छ।

l_dup = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]

print(random.sample(l_dup, 3))
# [3, 1, 1]

यदि तपाइँ नक्कल मानहरूबाट बच्न चाहनुहुन्छ भने, तपाइँ यसलाई सेट (सेट प्रकार) मा रूपान्तरण गर्न प्रयोग गर्न सक्नुहुन्छ र केवल अद्वितीय तत्वहरू निकाल्नुहोस्, र त्यसपछि नमूना () प्रयोग गर्नुहोस्।

print(set(l_dup))
# {0, 1, 2, 3}

print(random.sample(set(l_dup), 3))
# [1, 3, 2]

अनियमित रूपमा धेरै तत्वहरू चयन गर्नुहोस् (डुप्लिकेटहरूसँग):random.choices()

अनियमित मोड्युलको प्रकार्य विकल्पहरू() ले तपाईंलाई सूचीबाट अनियमित रूपमा धेरै तत्वहरू पुन: प्राप्त गर्न अनुमति दिन्छ, र नमूना () को विपरीत, यसले नक्कल तत्वहरू चयन गर्न अनुमति दिन्छ।

choices() पाइथन ३.६ मा थपिएको प्रकार्य हो। यो अघिल्लो संस्करणहरूमा उपलब्ध छैन।

तर्क k ले पुन: प्राप्त गर्न तत्वहरूको संख्या निर्दिष्ट गर्दछ। नक्कल गर्न अनुमति दिइएको छ, त्यसैले पुन: प्राप्त गर्न तत्वहरूको संख्या मूल सूचीमा तत्वहरूको संख्या भन्दा ठूलो हुन सक्छ।

k एक किवर्ड-मात्र तर्क भएकोले, k=3 जस्तै किवर्ड निर्दिष्ट गर्न आवश्यक छ।

import random

l = [0, 1, 2, 3, 4]

print(random.choices(l, k=3))
# [2, 1, 0]

print(random.choices(l, k=10))
# [3, 4, 1, 4, 4, 2, 0, 4, 2, 0]

k को पूर्वनिर्धारित मान 1 हो; यदि यसलाई हटाइयो भने, 1 तत्व भएको सूची फर्काइन्छ।

print(random.choices(l))
# [1]

तर्क वजन प्रत्येक तत्व चयन गरिने वजन (सम्भाव्यता) निर्दिष्ट गर्न प्रयोग गर्न सकिन्छ, र सूची मा तत्व को प्रकार int वा फ्लोट हुन सक्छ।

print(random.choices(l, k=3, weights=[1, 1, 1, 10, 1]))
# [0, 2, 3]

print(random.choices(l, k=3, weights=[1, 1, 0, 0, 0]))
# [0, 1, 1]

argument cum_weights लाई सञ्चित वजनको रूपमा पनि निर्दिष्ट गर्न सकिन्छ। निम्न नमूना कोडको कम_वेट्स माथिको पहिलो तौलको बराबर छ।

print(random.choices(l, k=3, cum_weights=[1, 2, 3, 13, 14]))
# [3, 2, 3]

दुबै आर्गुमेन्ट वजन र cum_weights को लागि पूर्वनिर्धारित None हो, जसको मतलब प्रत्येक तत्व समान सम्भाव्यता संग चयन गरिएको छ।

यदि तर्क वजन वा cum_weights को लम्बाइ (तत्वहरूको संख्या) मूल सूची भन्दा फरक छ भने, त्रुटि देखा पर्दछ।

# print(random.choices(l, k=3, weights=[1, 1, 1, 10, 1, 1, 1]))
# ValueError: The number of weights does not match the population_

यो पनि एकै समयमा वजन र कम_वेट निर्दिष्ट गर्न त्रुटि हो।

# print(random.choices(l, k=3, weights=[1, 1, 1, 10, 1], cum_weights=[1, 2, 3, 13, 14]))
# TypeError: Cannot specify both weights and cumulative weights

हामीले अहिलेसम्म नमूना कोडमा उदाहरणको रूपमा पहिलो तर्कको रूपमा सूची निर्दिष्ट गरेका छौं, तर त्यहि टपल र स्ट्रिङहरूमा लागू हुन्छ।

अनियमित संख्या बीज ठीक गर्नुहोस्

यादृच्छिक मोड्युलको प्रकार्य बीज() लाई एक स्वेच्छाचारी पूर्णांक दिएर, अनियमित संख्याको बीज फिक्स गर्न सकिन्छ र अनियमित संख्या जनरेटर सुरु गर्न सकिन्छ।

एउटै बीउको साथ प्रारम्भ पछि, तत्वहरू सधैं उही तरिकामा चयन गरिन्छ।

random.seed(0)
print(random.choice(l))
# 3

random.seed(0)
print(random.choice(l))
# 3
Copied title and URL