这种类型的排列是否有更优雅的方法?

3

我有这段代码:

import itertools
variations = list(itertools.permutations(['a', 'b', 'c'], 2))
for v in variations:
    print(''.join(v))

我想获取所有的字符。如果我要使用这段代码,我应该像这样编写:

variations = list(itertools.permutations(['a', 'b', 'c', 'd', 'e', '.......

难道没有更优美的方式吗?


1
为什么需要额外的 list() - Klaus D.
['a', 'b', 'c']和'abc'在这里没有不同的输出。 - mathfux
1
转换为列表是完全不必要的,事实上,如果有大量项目,它会极大地增加资源使用。 - Klaus D.
1个回答

6

你可以使用字符串而不是字符串列表。此外,你可以使用 string 模块,并使用预定义的常量 ascii_lowercase 代表所有小写字母:

import string
variations = itertools.permutations(string.ascii_lowercase, 2)

如果你需要额外的字符,可以扩展字符串以包含所需的字符,或者你可以使用字符串模块中定义的其他字符串常量之一:

...permutations(string.ascii_lowercase + '/\\$!@#%', 2)
...permutations(string.printable, 2)

6
string.printable 是你所需要的。 - Iain Shelvington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接