2011-02-28 12 views
10

मैं एक समारोह generateAllStrings(n, alphabet) जरूरत है कुछ इस तरह करना है:क्या Python में कोई फ़ंक्शन है जो किसी दिए गए वर्णमाला पर लंबाई n के सभी स्ट्रिंग उत्पन्न करता है?

generateAllStrings(4, ['a','b']) 
>>> ["aaaa", "aaab", "aaba", "aabb", "abaa", .... , "bbba", "bbbb"] 

दूसरे शब्दों में, generateAllStrings(n, alphabet) सूची वर्णमाला में वर्ण से अधिक लंबाई n के सभी संभव तार लौटना चाहिए।

क्या Itertools या कुछ में ऐसा कोई फ़ंक्शन है?

उत्तर

38
>>> [''.join(i) for i in itertools.product("ab",repeat=4)] 
['aaaa', 'aaab', 'aaba', 'aabb', 'abaa', 'abab', 'abba', 'abbb', 'baaa', 'baab', 'baba', 'babb', 'bbaa', 'bbab', 'bbba', 'bbbb'] 
+0

मैं इतना मेरा उत्तर की तुलना में बेहतर = की तरह) – Wipqozn

+0

वास्तव में भव्य समाधान ~ – Drake

+13

सुंदर: तत्काल +1। थोड़ा सा जोड़ा: सूची समझ के लिए ब्रैकेट की बजाय, ब्रांड्स का उपयोग करके एक पूर्ण पूर्वनिर्धारित सूची के बजाय एक इंटरैबल लौटाएगा। समाधान के लिए – slezica

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