我有一个整数列表,需要去除其中的重复序列,但逻辑让我头痛。
我一直在尝试修改这个,以符合我的需求,但它只返回与重复序列长度相关的一个数字,并且只计算从起始整数开始的序列。
到目前为止,我已经做到了这一步:
我一直在尝试修改这个,以符合我的需求,但它只返回与重复序列长度相关的一个数字,并且只计算从起始整数开始的序列。
到目前为止,我已经做到了这一步:
def findRep(rmRepList):
#Array to hold [starting position, length] of repeating sequences
repList = []
#For each industry listed
for industry in rmRepList:
#Maximum starting position
maxStartPos = len(industry)-2
#For each possible starting point of repetition
for start in range(1,maxStartPos):
#Limit on how long the repetition can be
maxLen = math.ceil((len(industry)-start)/2)
#For each possible length (2 because already canceled out repeating resources in genAllLoop)
for i in range(2,maxLen):
#If the next 'i' integers repeat
if industry[start:i+start] is industry[i+start:2*i+start]:
repList = [start,i]
industry = rmRep(repList, industry)
#If reached end of list
if 2*i+start+1 == len(industry):
#End loop
break
def rmRep(rmProp, loop):
#Sequence of resources to drop
rmSeq = [loop[rmProp[0]:rmProp[0]+rmProp[1]]]
#Debugging statement
print(rmSeq)
loop.remove(rmSeq)
return(loop)name = username_entry.get()
rmRepList是一个列表的列表,其中每个列表都需要进行分析。
例如,如果给定一个列表
rmRepList = [[0,1,2,1,2,1,0],[0,1,2,1,2,1,2,3,4,5,3,4,5,6,0]]
我需要它返回[[0,1,2,1,0], [0,1,2,3,4,5,6,0]]
现在,代码甚至没有到达rmRep子程序。我有一种可怕的感觉,我做错了。我不喜欢代码中需要这么多循环,特别是实际要分析的列表长达数百位数。有更简单的方法吗?
编辑:如果有帮助,我可以保证列表中不会重复一个整数(例如[0,0,0,1,0]
不会发生)。
此外,列表中的第一个和最后一个数字将始终相同。
[0,1,2,3,4,1,2]
可能吗?-> 你会移除哪一个? - wwii