Mat*_*w D 5 python string list permutation python-itertools
在Python中,我正在使用list(itertools.permutations("0123456789")),我收到(我按预期)一个单元字符串元组的列表.
有没有办法将该结果转换为字符串列表,而不迭代所有3628800项?
如果你想在没有迭代整个列表的情况下这样做,而是根据需要懒洋洋地进行,你可以使用itertools.imap:
itertools.imap(lambda x: "".join(x), itertools.permutations("0123456789"))
Run Code Online (Sandbox Code Playgroud)
(请注意,我没有使用这里list()的结果,permutations所以它尽可能地懒惰)
或者,正如评论中所指出的,一个简单的生成器表达式也适用于此:
("".join(x) for x in itertools.permutations("0123456789"))
Run Code Online (Sandbox Code Playgroud)
itertools.imap 具有额外的好处是能够使用方便的语法在许多迭代上应用相同的函数(简单地将它们作为后续参数添加),但这对于这种特定用法不是必需的,因为我们只有一个可迭代