判断一个序列中是否含有重复序列:
def repeat(seq):
guess = 0
for i in range(0, len(seq)):
test_seq=seq[i:len(seq)]
max_len = len(test_seq) // 2
for x in range(2+i, max_len):
if test_seq[i:x] == test_seq[x:2*x]:
return True
return guess
list_a = [1,2,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(repeat(list_a))
print(repeat(list_b))
print(repeat(list_c))
print(repeat(range(500))) # test of no repetition
得到的结果如下:
0
True
True
0
当重复序列前面有其它元素时,列表总是返回guess(0)值,感觉外层循环没有进行循环,这个代码有什么错误码?
部分代码来源于以下文章:https://blog.csdn.net/weixin_35868872/article/details/116181844?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E8%AF%86%E5%88%AB%E4%B8%80%E6%AE%B5%E5%BA%8F%E5%88%97%E6%98%AF%E5%90%A6%E4%B8%BA%E9%87%8D%E5%A4%8D%E5%BA%8F%E5%88%97&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-7-116181844.142^v96^pc_search_result_base9&spm=1018.2226.3001.4187