这可以工作,但我没有测试其他序列,我只是为你的例子测试了它。
data = [1,2,3,1,2,3,4,5,6,7,4,5,6,7,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,23,18]
print(data)
checkindex = []
for j in range(1, len(data)):
for k in range(len(data)):
try:
if data[k] == data[j+k]:
if j+k not in checkindex:
checkindex.append(j+k)
except IndexError:
continue
checkindex = sorted(checkindex)
for i in range(len(checkindex)-1, -1, -1):
del data[checkindex[i]]
print(data)
输出:
[1, 2, 3, 1, 2, 3, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 23, 18]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 23, 18]
解释:
for k in range(len(data)):
if data[i+k] == data[j+k]:
例如对于j=3,基本上是这样的:
data[0] == data[3+0]: True
data[1] == data[3+1]: True
data[2] == data[3+2]: True
data[3] == data[3+3]: False
对于每个True,附加(j+k) --> 如果它不重复。我建议尝试在这里和那里打印以了解更多信息,例如:
data = [1,2,3,1,2,3,4,5,6,7,4,5,6,7,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,23,18]
print(data)
checkindex = []
for j in range(1, len(data)):
for k in range(len(data)):
try:
if data[k] == data[j+k]:
print(j, k, j+k)
if j+k not in checkindex:
checkindex.append(j+k)
except IndexError:
continue
print(checkindex)
checkindex = sorted(checkindex)
for i in range(len(checkindex)-1, -1, -1):
del data[checkindex[i]]
print(data)
您的输出将是:
[1, 2, 3, 1, 2, 3, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 23, 18]
[]
[]
3 0 3
3 1 4
3 2 5
[3, 4, 5]
4 6 10
4 7 11
4 8 12
4 9 13
4 10 14
4 11 15
4 12 16
4 13 17
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
8 6 14
8 7 15
8 8 16
8 9 17
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17]
10 14 24
10 15 25
10 16 26
10 17 27
10 18 28
10 19 29
10 20 30
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
14 10 24
14 11 25
14 12 26
14 13 27
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30]
18 3 21
18 4 22
18 5 23
18 6 24
18 7 25
18 8 26
18 9 27
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
21 0 21
21 1 22
21 2 23
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17, 24, 25, 26, 27, 28, 29, 30, 21, 22, 23]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 23, 18]
我个人认为打印语句有助于我理解更多。