擅长:python、mysql、java
<p>我有种感觉可以做得更好,但这至少可以:</p>
<pre><code>from itertools import product
a = "abcd"
A = "ABCD"
print [[a[y] if x[y] else A[y] for y in range(len(x))] \
for x in product(range(2), repeat=4)]
</code></pre>
<p><strong>编辑:</strong>另一种方法:</p>
^{pr2}$
<p><strong>编辑2:</strong>任意数量列表的通用解决方案:</p>
<pre><code>def sublist(*lists):
if not len(set(len(x) for x in lists)) == 1:
raise ValueError("Lists must all be the same length")
length = len(lists[0])
return [[lists[y][i] for i, y in enumerate(x)] \
for x in product(range(len(lists)), repeat=length)]
print sublist("ab", "AB", "12")
# [['a', 'b'], ['a', 'B'], ['a', '2'], ['A', 'b'], ['A', 'B'], ['A', '2'], ['1', 'b'], ['1', 'B'], ['1', '2']]
</code></pre>