在不改变顺序的情况下查找组合
Find combinations without changing order
我正在尝试根据此列表生成排列而不更改顺序。
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
:
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
我正在尝试根据此列表生成排列而不更改顺序。
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
:
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