详谈python3中用的循环删除列表中元素的坑

  

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

  

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

        x=(1、2、3)   它=iter (x)   #=x.__iter__ ()   print(类型(其))   #打印(its.__next__ ())   #打印(its.__next__ ())   #打印(its.__next__ ())   print (next ())   print (next ())   print (next ())      

        & lt;类“list_iterator”比;   1   2   3      

  

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

  

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

  

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

        list1=[1、2、3、4、5、6)   因为我在list1:   如果我==2:   list1.remove(我)   打印(我)   打印(list1)      

        1   2   4   5   6   (1、3、4、5、6]      

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

  

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

  

以上这篇详谈python3中用的循环删除列表中元素的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

详谈python3中用的循环删除列表中元素的坑