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

Posted

技术标签:

【中文标题】如何将 itertools.permutations("0123456789") 的结果(在 python 中)转换为字符串列表【英文标题】:How to turn the result (in python) of itertools.permutations("0123456789") into list of strings 【发布时间】:2011-03-17 18:58:33 【问题描述】:

在 Python 中,我使用的是list(itertools.permutations("0123456789")),并且我正在接收(如预期的那样)单个字符串的元组列表。

有没有办法将结果转换为字符串列表,而无需遍历所有 3628800 个项目?

【问题讨论】:

【参考方案1】:

如果你想这样做不遍历整个列表,而是根据需要懒惰地这样做,你可以使用itertools.imap

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

(请注意,这里我没有在permutations 的结果上使用list(),所以它尽可能地懒惰)

或者,正如 cmets 中所指出的,一个简单的生成器表达式也可以在这里工作:

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

itertools.imap 有一个额外的好处,就是能够以方便的语法将相同的函数应用于许多可迭代对象(只需将它们作为后续参数添加),但对于这种特殊用法,这不是必需的,因为我们只有一个可迭代对象

【讨论】:

这几乎没有比生成器表达式更好,但不太常见:("".join(xs) for xs in itertools.permutations("0123456789"))。为什么TF str.join("")? @delnan 是的,我替换了str.joinbrainfart,其他语言的脑袋太长了;) 哇!没想到回复这么快!谢谢!【参考方案2】:

把它变成一个列表会遍历整个事情。您可以将其转换为具有列表理解的列表,这比将其转换为列表然后遍历列表中的所有项目要好:

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

如果您不需要以列表结尾,则生成器表达式就足够了(将 [] 替换为 ())。

【讨论】:

以上是关于如何将 itertools.permutations("0123456789") 的结果(在 python 中)转换为字符串列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将CString转换成wstring

如何将Ios文件上传到

Qt如何将文字变成图片?

如何将Bitmap保存为本地图片文件?

在MATLAB中如何将图导出

ASP如何将SQLSERVER数据导出到DBF(VF)