我试图在不改变顺序的情况下从这个列表生成排列。
mylist = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i"]]
预期结果:
acegi bcehi acfgi bcfhi adegi bdehi adfgi bdfhi acegi bcehi acfgi bcfhi adegi bdehi adfgi bdfhi
此代码按预期工作。但我想知道还有没有别的办法。
for f in range(2): for s in range(2): for t in range(2): for f in range(2): print( mylist[0][f] + mylist[1][s] + mylist[2][t] + mylist[3][f] + mylist[4][0] )
你可以用 itertools.product :
itertools.product
import itertools mylist = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i"]] for p in itertools.product(*mylist): print(''.join(p)) # acegi # acehi # acfgi # acfhi # adegi # adehi # adfgi # adfhi # bcegi # bcehi # bcfgi # bcfhi # bdegi # bdehi # bdfgi # bdfhi