栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python

在遍历列表时,你正在修改它。这意味着第一次遍历循环时,i==1,因此1从列表中删除。然后for循环转到列表中的第二项,不是2,而是3!然后从列表中删除,然后for循环转到列表中的第三项,现在是5。等等。也许这样更容易想象,用

^
表示
i
的值:

[1, 2, 3, 4, 5, 6...] ^

最初是列表的状态;然后删除1,然后循环转到列表中的第二项:

[2, 3, 4, 5, 6...]    ^[2, 4, 5, 6...]       ^

等等。

在迭代列表时,没有很好的方法来更改列表的长度。你可以做的最好的事情是这样的:

numbers = [n for n in numbers if n >= 20]

或这样,就地更改(parens中的内容是一个生成器表达式,在切片分配之前隐式转换为元组):

numbers[:] = (n for in in numbers if n >= 20)

如果要在删除n之前对n执行操作,可以尝试的一种技巧是:

for i, n in enumerate(numbers):    if n < 20 :        print "do something"         numbers[i] = Nonenumbers = [n for n in numbers if n is not None]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号