通过迭代2到一半序列长度之间的猜测来猜测序列长度。如果未发现任何模式,则默认返回1。
def guess_seq_len(seq): guess = 1 max_len = len(seq) / 2 for x in range(2, max_len): if seq[0:x] == seq[x:2*x] : return x return guesslist_a = [111,0,3,1,111,0,3,1,111,0,3,1] list_b = [67,4,67,4,67,4,67,4,2,9,0]list_c = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,23,18,10]print guess_seq_len(list_a)print guess_seq_len(list_b)print guess_seq_len(list_c)print guess_seq_len(range(500)) # test of no repetition
得到(如预期):
42101
根据要求,此替代方法可提供最长的重复序列。因此,它将为list_b返回4。唯一的变化是
guess = x不是
return x
def guess_seq_len(seq): guess = 1 max_len = len(seq) / 2 for x in range(2, max_len): if seq[0:x] == seq[x:2*x] : guess = x return guess



