例如【1,2,3,4】我想用remove和for除去所有元素,如果用一层for循环会因为remove导致i指标变化导致无法除去所有元素 ,下面的代码可以解决,但是我看不懂i的变化有没有大神能教一下
list = [1,2,3,4] for i in list[:]: for i in list[:]: print(i,list) list.remove(i) print(list)
说错了一点 是导致i指标变化超出循环元素数而无法除去所有元素
是不是多打了一行
for i in list[:]:
没有
list[:]
这个应该是类似于list.copy()吧,不是原列表了
就是两层for 都是i
那我就看不懂了
如果 两层不一样的i的话会这样list = [1,2,3,4]
for i in list: for a in list: print(i,a,list) list.remove(i) print(list) 1, 1, [1, 2, 3, 4]) [2, 3, 4] (1, 3, [2, 3, 4]) ValueError: list.remove(x): x not in list
只有上面那个能解决 我想不明白i的指标变化
我把第一行循环删了结果还是一样
第一行的循环是多余的,因为第二行循环超过下标后,第一行也自然超过了
好像也不是超标的原因,应该是第一层for在第二次循环的时候list已经空了,第二层循环已经没意义了
我感觉是因为list[:]是副本 for循环除去的是副本的值,所以原来的list可以正常除去每个I的值,如果不用副本就会因为【1,2,3】i指标为0除去1,变为【2,3】.i指标为1,除去3剩下【2】,i指标为2找不到元素而跳出循环
所以我说i指标超出元素数