<分区>
我正在处理一个列表列表,每个列表中都有非完全平方根的连分数周期。
我想用它们做的是检查每个列表中最大重复模式的大小。
例如一些列表:
[
[1,1,1,1,1,1....],
[4,1,4,1,4,1....],
[1,2,10,1,2,10....],
[1,1,1,1,1,4,1,4,1,20,9,8,1,1,1,1,1,4,1,4,1,20,9,8....],
[2,2,2,4,2,2,2,4....],
[1,1,1,13,21,45,3,3,1,16,4,1,4,1,1,1,24,15,1,1,1,13,21,45,3,3,1,16,4,1,4,1,1,1,24,15....],
[1,1,1,3,28,1,1,1,3,28,67,25,1,1,1,3,28,1,1,1,3,28,67,25....]
]
我一直在使用的两种类似方法是:
def lengths(seq):
for i in range(len(seq),1,-1):
if seq[0:i] == seq[i:i*2]:
return i
def lengths(seq):
for i in range(1,len(seq)-1):
if seq[0:i] == seq[i:i*2]:
return i
这些都采用列表的大小并从当前位置比较它的索引大小。 问题是第一个仅针对一个重复数字返回错误,因为它开始很大并且看到的只是一个大模式。 第二个问题是有像第六个和第七个示例列表这样的嵌套模式,它会被满足 使用嵌套循环并忽略模式的其余部分。