首页 > 解决方案 > python从单词列表中生成所有组合

问题描述

我想创建简单的脚本来生成从用户名开始的所有 posibile 用户名。

示例输入:

craciun florin ionel

需要输出:

craciun.florin
craciun.florin.ionel
craciun.ionel
florin.ionel
florin.craciun
ionel.florin.craciun
craciunflorin
ionel.craciun.florin
....

我尝试使用该itertools工具,但输出无法满足我的需要。

我当前的代码:

>>> import itertools
>>> names = ['craciun','florin','ionel']
>>> keywords = ['.'.join(i) for i in itertools.product(names, repeat=2) if i[0] != i[1]] 
>>> keywords
['craciun.florin', 'craciun.ionel', 'florin.craciun', 'florin.ionel', 'ionel.craciun', 'ionel.florin']

如何获得所需的输出?

标签: python-2.7

解决方案


一个班轮,因为我们爱他们:

keywords = [ ".".join(i) for i in itertools.chain.from_iterable(itertools.permutations(names, r) for r in [2, 3])]

结果:

['craciun.florin', 'craciun.ionel', 'florin.craciun', 'florin.ionel', 'ionel.craciun', 'ionel.florin', 'craciun.florin.ionel', 'craciun.ionel.florin', 'florin.craciun.ionel', 'florin.ionel.craciun', 'ionel.craciun.florin', 'ionel.florin.craciun']

推荐阅读