Python 2.7 python从单词列表生成所有组合
我想创建一个简单的脚本来生成从用户名开始的所有posibile用户名 输入示例: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工具,但输出不适合我的需要 我当前的代码: >&
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']