【发布时间】:2016-01-02 20:54:11
【问题描述】:
我一直在查看其他 SO 帖子,以便创建一个程序,该程序将在给定某些参数的情况下生成组合列表(字母 + 数字),我已经做到了:
from itertools import product
from string import *
keywords = [''.join(i) for i in product(ascii_letters + digits, repeat = 3)]
file = open("file.txt", "w")
for item in keywords:
file.write("%s\n" % item)
file.close()
如果 repeat 参数保持为 3/4,则该程序运行良好,但如果提高到 5 或更高,则程序不会完成 - 它不会崩溃,只是似乎永远不会完成.我猜这是一个性能问题,但我不确定。如果有人可以提供更有效的程序,将不胜感激。
其次,我希望程序同时输出:
- aec
- cea
使用这个当前代码,它只会输出第一个。
【问题讨论】:
-
使用来自 itertools 的排列
-
它对我有用。你确定你关闭了文件?你需要打电话给
file.close()而不是file.close。 -
它似乎仍然不适合我,有什么建议/理由吗?我会尝试排列。
-
按照@ajcr 的建议,您应该在这里使用
generator表达式。但是程序仍然需要大量时间才能写入您的文件。
标签: python string performance file-io