我正在处理脚本的一部分,该脚本会在实时打印时生成字符串的排列:
perms = itertools.permutations(inputstring)
for i, perm in enumerate(perms, 1):
word = "".join(perm)
wordcount = wordcount + 1
print("%s is word #%d" % (word, wordcount))
这很好用,除非给定一个带有重复字符的字符串,它会生成重复的排列。例如,如果给出输入字符串“aa”,它会打印两个排列,“aa”和“aa”,这显然是相同的。我通过将代码编辑为:
来阻止它打印这些重复项perms = itertools.permutations(inputstring)
for i, perm in enumerate(perms, 1):
word = "".join(perm)
if word not in permcheck:
permcheck.append(word)
wordcount = wordcount + 1
print("%s is word #%d" % (word, wordcount))
但这仍然意味着产生大量无用的重复排列,这会降低效率。有没有办法解决重复问题,同时仍然实时打印而不牺牲效率?