गणित में, एक सेट के सभी सदस्यों को किसी क्रम या क्रम में व्यवस्थित करना और यदि सेट पहले से ही व्यवस्थित है, तो उसके तत्वों को पुनर्व्यवस्थित (पुन:व्यवस्थित) करना क्रमपरिवर्तन कहलाता है। हम विभिन्न तकनीक का उपयोग करके क्रमपरिवर्तन उत्पन्न कर सकते हैं। उनमें से कुछ नीचे हैं,
विधि 1
पायथन क्रमपरिवर्तन और संयोजन के लिए समर्पित मॉड्यूल के साथ आता है जिसे itertools कहा जाता है।
पहले मॉड्यूल आयात करें
>>> import itertools >>>
क्रमपरिवर्तन फ़ंक्शन हमें एक सूची के भीतर N मानों का क्रमपरिवर्तन प्राप्त करने की अनुमति देता है, जहां आदेश मायने रखता है। उदाहरण के लिए, चयन N =2 मान [1,2,3,4] के साथ निम्नानुसार किया जाता है -
Permutation (order matters): >>> print(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)]
संयोजन (आदेश मायने नहीं रखता)
>>> print(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]