Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在Python2.7中检查重复数组时,列表超出范围_Python 2.7_List_Indexoutofrangeexception_Xrange - Fatal编程技术网

Python 2.7 在Python2.7中检查重复数组时,列表超出范围

Python 2.7 在Python2.7中检查重复数组时,列表超出范围,python-2.7,list,indexoutofrangeexception,xrange,Python 2.7,List,Indexoutofrangeexception,Xrange,目标很简单:有一个文件,其中x个数字由`分隔。如果文件中有该号码的副本,则应将其删除。我决定通过将n个成员与从n到lenarray的所有其他成员进行比较来解决这个问题。守则: #deletes repeated numbers separated by ` questioned=open("key_file.txt",'r+') numbers=questioned.read() #print(numbers) numb=[] number=[] for each in numbers:

目标很简单:有一个文件,其中x个数字由`分隔。如果文件中有该号码的副本,则应将其删除。我决定通过将n个成员与从n到lenarray的所有其他成员进行比较来解决这个问题。守则:

    #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应该转到lenarray。我的猜测是lennumber没有被不断地重新评估导致该数字超出范围,因为一堆数字被删除了?
任何指点/提示都很好。非常感谢您抽出时间

好吧,看来我的担心是对的。在第二个循环中,j设法越过了导致错误的lennumber

#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语句即可正常工作。我不知道为什么会发生这种情况,但似乎确实如此。如果你们有一个很好的解释:/