Python 2.7 python从单词列表生成所有组合

Python 2.7 python从单词列表生成所有组合,python-2.7,Python 2.7,我想创建一个简单的脚本来生成从用户名开始的所有posibile用户名 输入示例: craciun florin ionel 所需产出: craciun.florin craciun.florin.ionel craciun.ionel florin.ionel florin.craciun ionel.florin.craciun craciunflorin ionel.craciun.florin .... 我试图使用itertools工具,但输出不适合我的需要 我当前的代码: >&

我想创建一个简单的脚本来生成从用户名开始的所有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']

如何获得所需的输出?

一种可能的方法是使用
itertools.permutations()
两次,一次使用
r=2
,另一次使用
r=3
,尽管这可能不是非常有效和“Pythonic”。 例如:

>>> import itertools
>>>
>>> my_list
['alfa', 'beta', 'gamma']
>>> result = []
>>> 
>>> # Round 1 with r=2 
>>> for combo in itertools.permutations(my_list, 2):
...     result.append(combo)
...
>>> result
[('alfa', 'beta'), ('alfa', 'gamma'), ('beta', 'alfa'), ('beta', 'gamma'), ('gamma', 
'alfa'), ('gamma', 'beta')]
>>>
>>> # Round 2 with r=3
>>> for combo in itertools.permutations(my_list, 3):
...     result.append(combo)
...
>>> result
[('alfa', 'beta'), ('alfa', 'gamma'), ('beta', 'alfa'), ('beta', 'gamma'), ('gamma', 
'alfa'), ('gamma', 'beta'), ('alfa', 'beta', 'gamma'), ('alfa', 'gamma', 'beta'), 
('beta', 'alfa', 'gamma'), ('beta', 'gamma', 'alfa'), ('gamma', 'alfa', 'beta'), 
('gamma', 'beta', 'alfa')]

你可以循环这个结果列表来进行格式化

一种可能的方法是使用
itertools.permutations()
两次,一次使用
r=2
,另一次使用
r=3
,尽管这可能不是非常有效和“Pythonic”。 例如:

>>> import itertools
>>>
>>> my_list
['alfa', 'beta', 'gamma']
>>> result = []
>>> 
>>> # Round 1 with r=2 
>>> for combo in itertools.permutations(my_list, 2):
...     result.append(combo)
...
>>> result
[('alfa', 'beta'), ('alfa', 'gamma'), ('beta', 'alfa'), ('beta', 'gamma'), ('gamma', 
'alfa'), ('gamma', 'beta')]
>>>
>>> # Round 2 with r=3
>>> for combo in itertools.permutations(my_list, 3):
...     result.append(combo)
...
>>> result
[('alfa', 'beta'), ('alfa', 'gamma'), ('beta', 'alfa'), ('beta', 'gamma'), ('gamma', 
'alfa'), ('gamma', 'beta'), ('alfa', 'beta', 'gamma'), ('alfa', 'gamma', 'beta'), 
('beta', 'alfa', 'gamma'), ('beta', 'gamma', 'alfa'), ('gamma', 'alfa', 'beta'), 
('gamma', 'beta', 'alfa')]

你可以循环这个结果列表来进行格式化

一行,因为我们爱他们:

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']

一行,因为我们爱他们:

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']