擅长:python、mysql、java
<p>我已经找到了你想要的解决办法。jrook指出的一条评论显示了与此类似的讨论,但在他们的案例中,它没有检查以确保它遵循了您想要的所有参数。所以我继续写了一段代码</p>
<pre><code>import itertools
list1 = ["A","B","C"]
list2 = ["1","2","3", "4"]
if len(list1) < len(list2):
x = list1[:]
list1 = list2
list2 = x
list3 = [zip(x,list2) for x in itertools.permutations(list1,len(list2))]
new = []
for lis in list3:
for i in lis:
new.append(i[1] + i[0])
else:
list3 = [zip(x,list2) for x in itertools.permutations(list1,len(list2))]
new = []
for lis in list3:
for i in lis:
new.append(i[0] + i[1])
final = []
final.append(new[0])
new = new[1:]
def add_to(new, final):
if final[-1][0] != new[0][0] and final[-1][1] != new[0][1] and final[-1] != new[0]:
final.append(new[0])
new = new[1:]
else:
b = new[0]
new = new[1:]
new.append(b)
return new, final
while new != []:
new, final = add_to(new, final)
print(final)
</code></pre>
<p>变量final是一个列表,它将确保遵循您想要的所有规则,即:没有重复项,没有相同的连续字母或数字。希望这就是你想要的。我编辑了这个,所以现在你可以让第二个或第一个列表的长度更长,它会工作得很好</p>