当通过一个数组检查python中的重复项时列表超出范围2.7

问题描述:

目标很简单:有一个文件的x个数字用`分隔。如果文件中有数字的共享者,则应删除它们。我决定通过比较n成员与从n到len(数组)的所有其他成员来解决这个问题。代码:当通过一个数组检查python中的重复项时列表超出范围2.7

#deletes repeated numbers separated by ` 
questioned=open("key_file.txt",'r+') 
numbers=questioned.read() 
#print(numbers) 
numb=[] 
number=[] 
for each in numbers: 
    if each=='`': 
     number.append(''.join(numb)) 
     numb=[] 
    else: 
     numb.append(each) 
i,j=0,0 
for i in xrange(len(number)): #we don't need to compare last number 
    for j in xrange(i+1,len(number)-1):#don't need to compare to itself 
     #print(len(number)," ",i," ",j) 
     if number[i]==number[j]: 
      number.pop(j) #tried del number[j] 


questioned.close() 

但是,似乎我设法超出范围,即使我指定xrange应该转到len(array)。我的猜测是len(数字)没有被持续重新评估,导致数字超出范围,因为一堆数字被删除了? 任何指针/提示将是伟大的。非常感谢您的时间!

好吧,好像我的恐惧是正确的。在第二个循环中,j设法通过导致错误的len(number)...

#deletes repeated numbers separated by ` 
questioned=open("key_file.txt",'r+') 
numbers=questioned.read() 
#print(numbers) 
numb=[] 
number=[] 
for each in numbers: 
    if each=='`': 
     number.append(''.join(numb)) 
     numb=[] 
    else: 
     numb.append(each) 
i,j=0,0 
def compare(number,i,j): 
    if number[i]==number[j]: 
     number.pop(j) 
     compare(number,i,j) 
    return number 

for i in xrange(len(number)): 
    for j in xrange(i+1,len(number)-1): 
     if j>len(number)-1: 
      break 
     #print(len(number)," ",i," ",j) 
     #try: 
      compare(number,i,j) 

     #except: print('i,j',i,' ',j,'len ',len(number)) 

questioned.close() 

工作正常,没有try语句。我不知道为什么会发生这种情况,但似乎确实如此。如果你们有一个很好的解释:/