Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 索引器错误:非空列表的列表分配索引超出范围_Python - Fatal编程技术网

Python 索引器错误:非空列表的列表分配索引超出范围

Python 索引器错误:非空列表的列表分配索引超出范围,python,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

我正在尝试以下代码

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
我不明白这是为什么。j怎么会超出范围?。在上面的行中,我打印了

这是因为,当您删除
lSet[i]
时,相同的元素也会从
rSet
中删除!这是因为变量
lSet
rSet
都引用同一个变量。要创建副本,请执行以下操作:

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

为了避免易变性问题,您还可以使用库中的
deepcopy
使单独的设置为true,但在本例中不是必需的,因为列表只包含整数。绝对不是必需的;只是另一种选择