for语句,为什么只循环2次就不循环了?
为什么只循环2次就不循环了?>>> mi = ['6h06201ua0', '4h06204ra0', '2h27106na0', '2h06206ta2']
>>> mi
['6h06201ua0', '4h06204ra0', '2h27106na0', '2h06206ta2']
>>> silk
['2h06206ta2', '2h27106na0', '4h06204ra0', '6h06201ua0']
>>> m = mi.copy()
>>> for i in m:
print('For i:',i)
if i in silk:
print('IN silk I:',i)
m.remove(i)
print('List M:',m)
For i: 6h06201ua0
IN silk I: 6h06201ua0
List M: ['4h06204ra0', '2h27106na0', '2h06206ta2']
For i: 2h27106na0
IN silk I: 2h27106na0
List M: ['4h06204ra0', '2h06206ta2'] 本帖最后由 heidern0612 于 2020-5-28 16:38 编辑
因为你针对的是复制列表的操作,应该针对原始列表。
虽然你复制了一份列表,但是你下面操作的还是复制的列表。
推荐复制列表操作的本来意思是,让你for循环原列表,操作复制列表。
而你是复制了一份列表,操作的还是复制列表,这跟for循环原列表,操作原列表有区别吗?
一边for循环,一边删元素,可是很危险的,谁也不知道会出啥状况。 heidern0612 发表于 2020-5-28 16:20
因为你针对的是复制列表的操作,应该针对原始列表。
虽然你复制了一份列表,但是你下面操作的还是复制的 ...
不复制结果也是一样, 只循环2次.
>>> a = ['6h06201ua0', '4h06204ra0', '2h27106na0', '2h06206ta2']
>>> b = ['6h06201ua0', '4h06204ra0', '2h27106na0', '2h06206ta2']
>>> for i in a:
if i in b:
a.remove(i)
>>> a
['4h06204ra0', '2h06206ta2'] Nate_2020 发表于 2020-5-29 08:47
不复制结果也是一样, 只循环2次.
???
不是说了不能一边for循环一边删除元素么?
你这不还是for循环的a,然后下面删的a么? Nate_2020 发表于 2020-5-29 08:47
不复制结果也是一样, 只循环2次.
还是说你想表达下面这个意思?
a删没了,b剩下4个。
a = ['6h06201ua0', '4h06204ra0', '2h27106na0', '2h06206ta2']
b= a[::]
for i in b:
if i in a:
a.remove(i)
print(a)
print(b)
谢谢,明白了, 不要修改正在for的列表.
页:
[1]