python第四天高级特性

切片操作 :如何取前三个元素,通过循环?可以通过切片操作

L[0:3],其中第一个参数表示切片的开始元素;第二个参数表示取到第几个元素结束;第三个参数表示取值时的跳跃间隔。

  

 倒数切片:L[-2:]输出的是 8,9

tuple和list一样具有切片操作特性,字符串也是一种list,因此字符串也可以进行切片,只是操作的结果是字符串

迭代:只要是可迭代对象,不管它是list还是tuple集合

dict集合的迭代

         1.key迭代   

           

              2.value迭代

           

          3.key和value一起迭代 

          

    判断一个对象是否可以迭代?通过collections模块的Iterable类型判断

    

   如果要对list实现类似java的下标循环怎么办,python内置的enumerate函数把一个list变成索引-元素对

    

 列表生成式

      一行语句生成list集合

          

使用两层循环,可以生成全排列

生成器:在循环中不断的推算出后续元素,不需要创建完整的list。一边循环一边计算的机制叫做生成器。

   创建一个生成器,有很多方法。第一种只要把列表生成式的[]改成(),就创建一个generator;

       1.如果一个一个打印出来,可以通过next()函数获得generator的下一个返回值:每次调用next(g)就计算出g的下一个元素的值,直到ji最后一个元素,没有更多元素时,抛出stopIteration的错误。

      2.直接for循环,因为generator对象是可迭代的。

           

    第二种生成generator的方法,只要一个函数定义中包含yield关键字,那就不是普通函数。而是generator

    

       generator和函数的执行流程不一样,函数是顺序执行,而generator函数,在每次调用next()的时候执行,遇到yield语句返回。

再次执行时从上一次返回的yield语句处继续执行。如果想拿到generator的return语句的返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中。

 迭代器:可以被next()函数调用并不断返回下一个值的对象成为迭代器,Iterationlist ,str ,tuple,生成器都是可迭代的Iterable,isinstance([],Iterable)是true,但是生成器是Iteration对象,而list,str,tuple则不是Iteration对象。isinstance([],Interation)是false、

list,str,tuple可以通过iter()函数变成Iteration对象 isinstance(iter([]),Iteration)值为true

原文地址:https://www.cnblogs.com/09120912zhang/p/7544945.html