2011-12-26 9 views
9

मुझे शीर्षक में उस फ़ंक्शन से प्राप्त होने वाले परिणामों की संख्या नहीं मिलती है, इसलिए मैं आपकी सहायता में आशा कर रहा हूं।पायथन itertools.combinations 'परिणाम

डॉक्स http://docs.python.org/library/itertools.html#itertools.combinations को देखते हुए परिणामों की संख्या होना चाहिए

लौटे मदों की संख्या n है!/आर!/(एन-आर)! जब 0 < = आर < = एन या शून्य जब आर> एन।

और यह वहाँ

संयोजन में उदाहरण के लिए काम करता है ('एबीसीडी', 2) -> एबी एसी ई ईसा पूर्व BD सीडी

क्योंकि n!/आर!/(एन-आर)! = 4!/2!/2! = 6

लेकिन अगर मैं

combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF 

कोशिश मैं उन 15 परिणाम प्राप्त। लेकिन एन!/आर!/(एन-आर)! = 6!/3!/(6-3)! = 720/6/6 = 20

तो: अजगर डॉक्स मुझे बताया कि मैं होना चाहिए 20 परिणाम है, लेकिन मैं 15

मिल आप कृपया मेरी मदद कर सकते मुझे समझने मैं क्या याद कर रहा हूँ? शायद मेरे गणित में कुछ है, के रूप में है कि सूत्र सही हो सकता है के रूप में यह में Wikipedia Combination entry

धन्यवाद है चाहिए, पी

उत्तर

21

itertools.combinations 20 आइटम वाले पुनरावर्तक लौट जाना चाहिए:

In [40]: len(list(itertools.combinations('ABCDEF',3))) 
Out[40]: 20 

ध्यान दें कि

In [41]: len(list(itertools.combinations('ABCDEF',2))) 
Out[41]: 15 

और उत्पादन पोस्ट

01,235,
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF 

केवल 2 अक्षरों के संयोजन दिखाता है। तो ऐसा प्रतीत होता है कि आपने combinations('ABCDEF', 2) की गणना की है, combinations('ABCDEF', 3) नहीं।

+0

आप सही हैं। मेरी गलती। डबल गलती: एक क्योंकि मैंने "संयोजन ('एबीसीडीईएफ', 3) लिखा" लेकिन मैंने वास्तव में 3 के बजाय 2 के साथ प्रयास किया। दूसरी गलती निश्चित रूप से पुन: प्रयोज्य वस्तु के साथ है जो मैं संयोजन() के साथ उपयोग कर रहा हूं। धन्यवाद :-) – Paolo

संबंधित मुद्दे