关于深度拷贝问题
list1 =L1 = len(list1) #列表list1的长度
list2 = copy.deepcopy(list1)
count = 0
for i in range(L1):
for j in range(len(list2)):
if (list1 == list2):
count += 1
if count > 2:
del(list2)
print(list2)
为什么报错提示 if (list1 == list2):
IndexError: list index out of range
求大哥指点 这不是深度拷贝的问题,是因为你在for循环内修改了你要遍历的序列,导致下标溢出
你的内层循环 j 取值为0~14,但是在循环内你修改了list2,使得list2长度小于15了,这样,当你下标较大的时候,就会报错说下标溢出。
两种方法解决问题
第一种,倒序遍历,这样删除的话,也不影响该元素前面的元素的下标
第二种,for遍历list2浅拷贝,而不是遍历下标
你这悬赏还不如不悬赏呢。。。不悬赏,最佳得到的奖励比你这个多多了 你要明白range(len(list2))不是每循环一次就计算一次的,它只在首次循环的时候执行,也就是下标范围已经是固定的了,但你在循环中又修改了列表list2导致长度变短,所以下标就超出范围了。 ls1 =
for item in range(len(ls1)):
if item == 1:
del ls1
print(ls1)
# 迭代器初始化后不变
# 删除生成迭代器本身的函数会出out of range
第1次循环:迭代器,使用序号0;循环完成后ls1内容。
第2次循环:迭代器,使用序号1;循环完成后ls1内容。
第3次循环:迭代器,使用序号2;ls1已没有ls1的元素,报错。
页:
[1]