您的位置:首页技术文章
文章详情页

python简单的问题,智商不够用了。。。

【字号: 日期:2022-08-28 15:26:47浏览:58作者:猪猪

问题描述

为何遍历a只遍历3次?智商不够了,list里最后一个为何没遍历到?智商不够了。。。

a = ['asd_1','asd_2','3','4']b = afor i in a: print(i) if i.find(’asd_’) < 0:b.remove(i)

输出:asd_1asd_23

问题解答

回答1:

因为列表上可变对象啊,a和b其实只想的是同一个地址,在b上面remove会影响a的迭代,不信你把a打印出来看

a = ['asd_1', 'asd_2', '3', '4']b = afor i in a: print(i) if i.find(’asd_’) < 0:b.remove(i)print a

输出:

asd_1asd_23[’asd_1’, ’asd_2’, ’4’]

这时a的长度已经变成3了

回答2:

上面的代码,b只是a的引用,你修改了b,a也被修改了,直接影响了a的迭代.

你可以试试

b = a.copy()

或者

b = a[:]

标签: Python 编程