擅长:python、mysql、java
<p>可以使用<code>itertools.product</code>输出元组列表</p>
<p>输入:</p>
<pre><code>import itertools
a= [range(0, 2), range(2, 5), range(4, 6), range(2, 3)]
list(itertools.product(*a))
</code></pre>
<p>输出:</p>
<pre><code>[(0, 2, 4, 2),
(0, 2, 5, 2),
(0, 3, 4, 2),
(0, 3, 5, 2),
(0, 4, 4, 2),
(0, 4, 5, 2),
(1, 2, 4, 2),
(1, 2, 5, 2),
(1, 3, 4, 2),
(1, 3, 5, 2),
(1, 4, 4, 2),
(1, 4, 5, 2)]
</code></pre>
<p>我在运行第一个代码时没有得到相同的结果。我不得不改变一下:</p>
<pre><code>x = [ ( [a,b] for a in rgs[0] for b in rgs[1] ) ]
x.append( ( a + [b] for a in x[-1] for b in rgs[2]) )
x = list( a + [b] for a in x[-1] for b in rgs[3])
</code></pre>
<p>大多数不了解itertools的人都会这样做:</p>
<pre><code>x=[]
for i0 in rgs[0]:
for i1 in rgs[1]:
for i2 in rgs[2]:
for i3 in rgs[3]:
x.append([i0,i1,i2,i3])
</code></pre>
<p>或者使用列表理解(不要这样做,它看起来非常混乱):</p>
<pre><code>[[i0,i1,i2,i3] for i3 in rgs[3] for i2 in rgs[2] for i1 in rgs[1] for i0 in rgs[0]]
</code></pre>