从数组中删除元素时列出索引超出范围

时间:2018-03-27 13:10:18

标签: python python-3.x

我知道这是一个基本问题,但这里很奇怪。

我不知道为什么会出错。请帮助我。提前致谢

arr = [11,22,33,44,55,66,77]
brr = [1,2,3,4,55]
res_arr = arr

for i in range(len(arr)):
    if arr[i] in brr:
        res_arr.remove(arr[i])

给我错误列表索引超出范围。

任何线索

编辑:

这有助于我解决错误。

res_arr = list(arr)

1 个答案:

答案 0 :(得分:1)

使用list comprehension。迭代元素时删除元素不是一个好主意。而res_arr = arr并不符合您的想法。您需要了解如何在python中复制对象

<强>实施例

arr = [11,22,33,44,55,66,77]
brr = [1,2,3,4,55]
print([i for i in arr if i not in brr])

<强>输出:

[11, 22, 33, 44, 66, 77]

您可以使用复制模块在python中复制对象。

<强>实施例

import copy
res_arr = copy.deepcopy(arr)