【发布时间】:2021-03-16 12:08:20
【问题描述】:
我有一个非常简单的排列脚本来将排列写入文件和一个计时器来说明脚本需要多长时间才能完成。
from itertools import permutations
import time
start_time = time.time()
str = '012345'
file=open("p1.txt","a")
perm = permutations(str, 6)
for i in perm:
file.write(''.join(i))
file.write('\n')
else:
print("--- %s seconds ---" % (time.time() - start_time))
file.close()
它给了我 012345 的所有排列。我想尝试并实现的是删除连续的字符,包括前后。
例如,如果排列是 05314,那就没问题了。非字符是连续的,无论是向前还是向后。但是,如果排列是 (a) 05324 或 (b) 05231,则这些都不行,因为 (a) 2 中的 3 向后,而 (b) 3 中的 2 向前。
这样的事情可能吗?谢谢。
【问题讨论】:
-
您希望 (1) 删除连续字符,还是 (2) 如果找到连续字符则删除整个字符串? IOW,你提到的违规者的输出应该是什么?
-
因此,如果遇到
052341,那么删除3是否满足您的要求,或者您是否希望删除34?如果要删除34,那么您将留下0521,那么它是否需要重新处理? -
您的代码有效吗?您有
str = '012345'掩盖了内置函数。但是,稍后您尝试使用带有file.write(str(i))的内置函数。 -
对不起,我在这里很新,不确定我是否可以引用个别 cmets....但无论如何; jpf / MonekyZeus - 如果出现连续字符,我希望从输出中删除该行,而不仅仅是删除违规字符。 DarrylG - 很好……我会从我的涂鸦中删除错误的线条;我应该留在 file.write(''.join(i)) ...我已经编辑了上面的代码,谢谢。
标签: python permutation