ब्रांड के नए पायथन 2.6 के साथ, आपके पास itertools मॉड्यूल के साथ एक मानक समाधान है जो Iterables के कार्टेशियन उत्पाद को लौटाता है:
import itertools
print list(itertools.product([1,2,3], [4,5,6]))
[(1, 4), (1, 5), (1, 6),
(2, 4), (2, 5), (2, 6),
(3, 4), (3, 5), (3, 6)]
आप उत्पाद को एक पुनरावर्तनीय और स्वयं के साथ करने के लिए "दोहराना" तर्क प्रदान कर सकते हैं:
print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
आप संयोजनों के साथ कुछ भी ट्विक कर सकते हैं:
print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
और अगर आदेश मायने रखता है, तो क्रमपरिवर्तन होते हैं:
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)]
बेशक यह सब अच्छी चीजें बिल्कुल वही काम नहीं करती हैं, लेकिन आप समस्या का समाधान करने के लिए उन्हें एक या दूसरे तरीके से उपयोग कर सकते हैं।
बस याद रखें कि आप एक टुपल या सूची को एक सेट में परिवर्तित कर सकते हैं और इसके विपरीत सूची (), tuple() और set() का उपयोग कर सकते हैं।