Nate_2020 发表于 2020-5-28 16:00:44

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:20:44

本帖最后由 heidern0612 于 2020-5-28 16:38 编辑

因为你针对的是复制列表的操作,应该针对原始列表。

虽然你复制了一份列表,但是你下面操作的还是复制的列表。

推荐复制列表操作的本来意思是,让你for循环原列表,操作复制列表。

而你是复制了一份列表,操作的还是复制列表,这跟for循环原列表,操作原列表有区别吗?


一边for循环,一边删元素,可是很危险的,谁也不知道会出啥状况。

Nate_2020 发表于 2020-5-29 08:47:29

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']

heidern0612 发表于 2020-5-29 09:03:14

Nate_2020 发表于 2020-5-29 08:47
不复制结果也是一样, 只循环2次.

???

不是说了不能一边for循环一边删除元素么?

你这不还是for循环的a,然后下面删的a么?

heidern0612 发表于 2020-5-29 09:04:28

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)

Nate_2020 发表于 2020-6-12 14:02:00

谢谢,明白了, 不要修改正在for的列表.
页: [1]
查看完整版本: for语句,为什么只循环2次就不循环了?