玩蛇网提供最新Python编程技术信息以及Python资源下载!

为什么我列表最后一项没有遍历到呢?

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

a = ["asd_1","asd_2","3","4"]
b = a

for i in a:
    print(i)
    if i.find('asd_') < 0:
        b.remove(i)

输出:
asd_1
asd_2
3

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

a = ["asd_1", "asd_2", "3", "4"]
b = a

for i in a:
    print(i)
    if i.find('asd_') < 0:
        b.remove(i)
print a

输出:

asd_1
asd_2
3
['asd_1', 'asd_2', '4']

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

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

你可以试试

b = a.copy()

或者

b = a[:]

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd13724.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月23日 - 17时13分02秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules