Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में सेट के सभी परम्युटेशन जेनरेट करना

परम्युटेशन किसी सेट के तत्वों को किसी क्रम में व्यवस्थित करना है। पायथन में इसे कई तरीकों से किया जा सकता है।

विधि 1: itertools मॉड्यूल (अनुशंसित)

पायथन का itertools मॉड्यूल परम्युटेशन और कॉम्बिनेशन के लिए बिल्ट-इन फ़ंक्शन प्रदान करता है।

>>> import itertools
>>> list(itertools.permutations([1, 2, 3, 4], 2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

कॉम्बिनेशन (क्रम महत्वपूर्ण नहीं)

>>> list(itertools.combinations('1234', 2))
[('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]

विधि 2: रिकर्सिव जेनरेटर (इन-प्लेस स्वैपिंग)

मेमोरी-कुशल दृष्टिकोण जो इंटरमीडिएट लिस्ट नहीं बनाता:

def permute(xs, low=0):
    if low + 1 >= len(xs):
        yield xs
    else:
        for p in permute(xs, low + 1):
            yield p
        for i in range(low + 1, len(xs)):
            xs[low], xs[i] = xs[i], xs[low]
            for p in permute(xs, low + 1):
                yield p
            xs[low], xs[i] = xs[i], xs[low]  # बैकट्रैक

for p in permute([1, 2, 3]):
    print(p)
# [1, 2, 3]
# [1, 3, 2]
# [2, 1, 3]
# [2, 3, 1]
# [3, 2, 1]
# [3, 1, 2]

विधि 3: सिंपल रिकर्सन (कॉपी के साथ)

import copy

def perm(prefix, rest):
    for e in rest:
        new_rest = copy.copy(rest)
        new_prefix = copy.copy(prefix)
        new_prefix.append(e)
        new_rest.remove(e)
        if len(new_rest) == 0:
            print(new_prefix + new_rest)
            continue
        perm(new_prefix, new_rest)

perm([], [1, 2, 3])
# [1, 2, 3]
# [1, 3, 2]
# [2, 1, 3]
# [2, 3, 1]
# [3, 1, 2]
# [3, 2, 1]

तुलना

विधिपक्षविपक्ष
itertools.permutationsतेज़, C में कार्यान्वित, पढ़ने में आसानसभी परिणाम एक साथ मेमोरी में आ सकते हैं
जेनरेटर (विधि 2)मेमोरी-कुशल, लेज़ी मूल्यांकनथोड़ा जटिल कोड
सिंपल रिकर्सन (विधि 3)समझने में आसानकॉपी के कारण धीमा, अधिक मेमोरी

सिफारिश

अधिकांश व्यावहारिक उद्देश्यों के लिए itertools.permutations का उपयोग करें। बड़ी सीक्वेंस के लिए जहां मेमोरी चिंता का विषय है, जेनरेटर-आधारित दृष्टिकोण (विधि 2) बेहतर है।

  1. - पायथन सेट ऑपरेशन

    सेट क्या है? गणित में, एक सेट विशिष्ट वस्तुओं का संग्रह है, जिसे अपने आप में एक वस्तु माना जाता है। उदाहरण के लिए, संख्याएं 2, 4, और 6 अलग-अलग मानी जाती हैं, लेकिन जब उन्हें सामूहिक रूप से माना जाता है तो वे आकार तीन का एक सेट बनाते हैं, जिसे {2,4,6} लिखा जाता है। सेट पर ऑपरेशन ऑपरेशनसंकेतनअर्थ इं

  1. - पायथन में लिस्ट के सभी परम्यूटेशन कैसे जनरेट करें?

    आप पायथन में लिस्ट के सभी परम्यूटेशन खोजने के लिए itertools पैकेज के permutations मेथड का उपयोग कर सकते हैं। आप इसका उपयोग इस प्रकार कर सकते हैं: उदाहरण import itertools perms = list(itertools.permutations([1, 2, 3])) print(perms) आउटपुट यह आउटपुट देगा: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1),

  1. - Python Sets समझाया: विशिष्टता, अपरिवर्तनीयता, और ऑपरेशन्स

    Python Sets एक कलेक्शन टाइप है जिसमें अनऑर्डर्ड कलेक्शन होता है यूनिक और इम्यूटेबल ऑब्जेक्ट्स का। दूसरे शब्दों में, एक Python सेट डुप्लिकेट आइटम्स नहीं रख सकता और एक बार सेट बन जाने के बाद, आइटम्स बदल नहीं सकते। नोट: सेट के आइटम्स इम्यूटेबल हैं, इसका मतलब है कि हम आइटम्स को बदल नहीं सकते। हालांकि, स