擅长:python、mysql、java
<p>您可以组合这些列表并使用生成器函数:</p>
<pre><code>l1 = ['w1', 'w2', 'w3', 'w4', 'w5']
l2 = ['w6', 'w7', 'w8']
def combos(d, c = []):
if len(c) == 4:
yield c
else:
for i in d:
s1, s2 = sum(i in c for i in l1), sum(i in c for i in l2)
if not (s1 and s2) and len(c) == 3:
if i not in c and ((not s1 and i in l1) or (not s2 and i in l2)):
yield from combos(d, c+[i])
elif i not in c:
yield from combos(d, c+[i])
print(list(combos(l1+l2)))
</code></pre>
<p>输出:</p>
<pre><code>[['w1', 'w2', 'w3', 'w6'],
['w1', 'w2', 'w3', 'w7'],
['w1', 'w2', 'w3', 'w8'],
['w1', 'w2', 'w4', 'w6'],
['w1', 'w2', 'w4', 'w7'],
['w1', 'w2', 'w4', 'w8']
....
['w6', 'w1', 'w7', 'w3'],
['w6', 'w1', 'w7', 'w4'],
['w6', 'w1', 'w7', 'w5'],
['w6', 'w1', 'w7', 'w8'],
['w6', 'w1', 'w8', 'w2']
....
]
</code></pre>