IndexError:列表赋值索引超出非空列表

时间:2016-07-08 21:51:31

标签: python

我正在尝试以下代码

def getCount(mySet):
    l = len(mySet)
    hsh={}
    lSet=[]
    rSet=[]
    for i in range(0,l-1):
        for j in range(i+1,l):
            if ((mySet[i]+mySet[j])%k==0):
                lSet = mySet
                rSet = mySet
                print "i, j ", i,j
                del lSet[i]
                del rSet[j]
                if len(lSet)==0 or len(rSet==0):
                    return 0
                left = getCount(lSet)
                right = getCount(rSet)
                if left==right:
                    return left

    return len(lSet)

n,k = [int(i) for i in raw_input().split(" ")]

mySet=[]

for x in raw_input().split(" "):
    mySet.append(int(x))

print getCount(mySet)

示例输入为

5 5
2 4 1 6 8

然而,我收到了错误

del rSet[j]
IndexError: list assignment index out of range

我不明白为什么会这样。 j如何超出范围?在上面的行中,我打印出

i, j  0 4

1 个答案:

答案 0 :(得分:1)

  

我不明白为什么会这样。 j如何超出范围?在上面的行中,我打印出

这是因为,当您删除lSet[i]时,同样的元素也会从rSet中删除!这是因为变量lSetrSet都引用了相同的变量。要创建副本,您可以这样做:

lSet = mySet[:]
rSet = mySet[:]