扣丁学堂Python培训之Python3中用for循环删除列表中元素的坑有哪些

2018-08-27 10:04:25 331浏览

Python3中用for循环删除列表中元素的坑有哪些呢?有不少对Python开发感兴趣的小伙伴对Python3中用for循环删除列表中元素的坑还不是很了解,本篇文章扣丁学堂Python培训小编就和喜欢Python开发技术的小伙伴们一起来探讨一下Python3中用for循环删除列表中元素的坑有哪些吧。



Python3中用for循环删除列表中元素的坑有哪些



for循环语句的对象是可迭代对象,可迭代对象需要实现__iter__或iter方法,并返回一个迭代器,什么是迭代器呢?迭代器只需要实现 __next__或next方法。


现在来验证一下列表为什么支持迭代:


x = [1,2,3]
its = iter(x)
# its = x.__iter__()
print(type(its))
# print(its.__next__())
# print(its.__next__())
# print(its.__next__())
print(next(its))
print(next(its))
print(next(its))


结果:


<class 'list_iterator'>
1
2
3


for 语句如何循环的呢?步骤是:


(1)先判断对象是否为可迭代对象,不是的话直接报错,抛出TypeError异常,是的话,调用 __iter__或iter方法,返回一个迭代器。


(2)不断地调用迭代器的__next__或next方法,每次按序返回迭代器中的一个值。


(3)迭代到最后,没有更多元素了,就抛出异常 StopIteration,这个异常 python 自己会处理,不会暴露给开发者。


list1 = [1,2,3,4,5,6]
for i in list1:
 if i == 2:
  list1.remove(i)
 print(i)
print(list1)


结果:


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


第二个print打印的结果显然是删除了元素2的列表,第一个print为什么没有3呢?因为执行for语句时,先生成一个迭代器,再用next方法,按序返回迭代器中的值,当列表中删除了元素2时,元素3的索引变成了原来元素2的索引,把元素3往前推到了元素2的位置,所以next方法就没返回值3.在python中,使用iter函数可以获得有序聚合类型的迭代器,我个人将迭代器理解为带有next指针的单向链表,获取到的迭代器为链表的表头,表头内容为空,next指针指向有序聚合类型的第一个元素。


在访问链表最后一个元素的next指针时,python会报错StopIteration。



以上就是扣丁学堂Python在线学习小编给大家分享的Python3中用for循环删除列表中元素的坑,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。想要学好Python开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Python学习路线图辅助学员学习,此外还有与时俱进的Python课程体系和Python学习视频教程供学员观看学习,想要学好Python开发技术的小伙伴快快行动吧。扣丁学堂Python技术交流群:279521237。


扣丁学堂微信公众号 


关注微信公众号获取更多学习资料 


 

查看更多关于"Python开发资讯"的相关文章>



标签: Python培训 Python视频教程 Python基础教程 python安装教程 Python核心编程 Python在线教程 Python在线视频 Python在线学习 扣丁学堂Python培训 Python3中用for循环删除列表中元素的坑有哪些

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号