python能不能分析一行数字的周期性
如题
比如这行数字是0 1 4 6 0 1 4 6 0 1 4 ……
0 1 4 6一个循环
在我不知道这行内容及周期性的情况下,能否用python分析出来?
能的话如何做?
[解决办法]
python能帮你一点,例如python中可以用dictionry记录/查询每个数出现的位置。更重要的是你的数列的特性,这就要靠你自己了,比如:
循环是否一定从第一个数开始,还是会有更复杂的情况:0 1 2 3 1 2 3 1 2 3?
是否一个数出现重复就一定预示着一个循环,还是会有更复杂的情况:0 1 0 0 1 0 1 0 0 1?
等等。
[解决办法]
如果是纯循环,就做一个标记从0开始,len=1
每次截取2*len的长度(因为循环小数可以写到某个位置停止加省略号,长度可能不一定正好是循环节的倍数)
比较前后相等就行了
如果是混循环,就做2个标记,一个a记录开始,一个b记录结束,原理跟上面一样,每次截取到a+2*b的长度就行了
[解决办法]
def SPP(a): alen = len(a); mc = None; for i in range(1, alen//2+1): for j in range(0, alen-i): if(a[j] != a[j+i]): break; else: mc = i; break; return mc;myas = [];myas.append("01460146");myas.append("0146014601");myas.append("0000");myas.append("1212");myas.append("01460146013");myas.append("12312");myas.append("12122");for a in myas: mc = SPP(a); if(mc == None): print(a, "is not a periodic sequence"); else: print("The SPP is:", a[:mc]);