如何将itertools.permutations("0123456789")的结果转为字符串列表

5 投票
2 回答
3343 浏览
提问于 2025-04-16 13:55

在Python中,我使用了 list(itertools.permutations("0123456789")),结果得到了一个包含单个字符字符串的元组列表,这个结果是我预期的。

有没有办法把这个结果变成一个字符串列表,而不需要遍历所有的3628800个项目呢?

2 个回答

1

把它变成一个列表会遍历整个内容。你可以用一种叫做列表推导的方法把它变成列表,这样比先变成列表再一个个遍历要好。

[''.join(item) for item in itertools.permutations('0123456789')]

如果你最后不需要得到一个列表,那么用生成器表达式就可以了(把[]换成()就行)。

5

如果你想要在不遍历整个列表的情况下,按需处理数据,可以使用 itertools.imap

itertools.imap(lambda x: "".join(x), itertools.permutations("0123456789"))

(注意,我没有对 permutations 的结果使用 list(),这样可以尽量延迟处理)

或者,正如评论中提到的,简单的生成器表达式也可以在这里使用:

("".join(x) for x in itertools.permutations("0123456789"))

itertools.imap 还有一个额外的好处,就是可以方便地对多个可迭代对象应用同一个函数(只需把它们作为后续参数添加),但在这个特定的用法中并不需要,因为我们这里只有一个可迭代对象

撰写回答