lbe*_*gni 7 python language-agnostic bash
我有一个令牌列表,如:
hel
lo
bye
Run Code Online (Sandbox Code Playgroud)
我想生成这些字符串的所有可能组合,例如:
hello
lohel
helbye
byehel
lobye
byelo
Run Code Online (Sandbox Code Playgroud)
语言不重要,有什么建议吗?
我发现使用bash生成排列,但这会在一行上进行排列.
Sve*_*ach 19
您的示例可以用Python编写
from itertools import combinations
print list(combinations(["hel", "lo", "bye"], 2))
Run Code Online (Sandbox Code Playgroud)
要将输出再次组合到字符串:
print ["".join(a) for a in combinations(["hel", "lo", "bye"], 2)]
Run Code Online (Sandbox Code Playgroud)
如果您对此函数的实际实现感兴趣,请查看文档.
itertools.permutations 可以为你做到这一点.
>>> l = ['hel', 'lo', 'bye']
>>> list(itertools.permutations(l, 2))
[('hel', 'lo'), ('hel', 'bye'), ('lo', 'hel'), ('lo', 'bye'), ('bye', 'hel'), ('bye', 'lo')]
Run Code Online (Sandbox Code Playgroud)
或者如果你想要组合,你可以使用itertools.combinations.
>>> l = ['hel', 'lo', 'bye']
>>> list(itertools.combinations(l, 2))
[('hel', 'lo'), ('hel', 'bye'), ('lo', 'bye')]
Run Code Online (Sandbox Code Playgroud)