zoukankan      html  css  js  c++  java
  • day13

    迭代器

    迭代器:不是函数,只是一个称呼而已

    python中一切皆对象

    为什么要有迭代器对象:提供了不依赖于索引取值的手段,只有字符串和列表都是依赖索引取值的,其他的可迭代对象都是无法依赖索引取值的

    for循环原理:for循环本质就是一个while循环,只不过是一个一定可控制的while循环

    • 可迭代器对象:含有-iter-方法叫做可迭代对象,除了数字类型都是可迭代对象,可迭代对象使用-iter-变成迭代器

    • 迭代器对象:含有-iter-和-next-方法的叫做迭代器对象,只有文件是迭代器对象,迭代器使用-iter-依然是迭代器

    可迭代对象不一定是迭代器对象;迭代器对象一定是可迭代对象

    总结:可迭代的对象:Python内置str、list、tuple(元组)、dict、set(集合)、file

    s='hello'
    iter_s = s._iter_()
    
    while True:
       try:
          print(iter_s.next_())
        except StopIteration
           break
    
    h
    e
    l
    l
    o
    

    迭代器对象:执行可迭代对象的—iter—方法,拿到的返回值就是迭代器对象

    特点:

    • 内置—next—方法,执行该方法会拿到迭代器对象中的一个值

    • 内置有—iter—方法,执行该方法会拿到迭代器本身

    ​ 文件本身就是迭代器对象

    缺点:取值麻烦,只能一个一个取,并且只能往后取值,值取了就没了

    ​ 无法使用len()方法取长度

    三元表达式

    三元表达式—》又叫三目表达式

    print(x) if x>y else print(y) 
    

    条件成立就执行if条件前面的else条件不成立就执行后面的

    列表推导式

    Python中列表推导式用于使用其他列表创建一个列表

    基本形式为:[表达式 for 变量 in 列表]

    如:

    想得到1-10的平方组成的list
    
    list_1_10 = [x**2 for x in range(1,11)]
    print(list_1_10)
    

    字典生成式

    lt1=['a','b','c']
    lt2=[1,2,3]
    
    dic = {k:v ** 2 for k,v in zip(lt1,lt2)}
    print(dic)
    
    lt = list('abc')
    print(lt)
    

    生成器

    generator 本质是一个迭代器 ——》生成器:本质就是迭代器,生成器就是一个自定义的迭代器

    生成器:含有yield关键字的函数叫做生成器、

    def ge():
       yield 3 一个yield相当于一个next;可以暂停函数(相当于return返回值)
       yield 4
      print(ge())  get()得到一个生成器——》生成器本质就是迭代器
    
    g=ge()  得到一个生成器
    
    yield的特性:
      暂停函数
      通过next取值
      
    return的特性:
       终止函数
       通过调用函数拿到值
    

    生成器生成式

    generator 本质是一个迭代器 ——》生成器:本质就是迭代器,生成器就是一个自定义的迭代器

    生成器表达式:看成老母鸡,节省内存空间,用的时候就下蛋

    列表推导式:看成一筐鸡蛋,非常占用内存空间

    递归

    递归就是函数a内部直接调用函数a本身

    每一次递归,会不会结束函数?不会,并且每一次递归都会开辟内存空间,如果一直开辟内存就会炸掉,所以最多递归1000次

    真正的递归必须得有退出条件

    count = 0
      def a():
      global count
      count +=1
      print(count)
      if count == 5:
         return 
       a()
     
    a()
    

    运行结果:

    1
    2
    3
    4
    5
    

    递归:

    • 函数内部调用函数自己
    • 必须要有退出条件
    • 递归必须要有规律
    def a():
       x=1
       print(x)
       a()
       
    a()
    
  • 相关阅读:
    【sqli-labs】 less52 GET -Blind based -Order By Clause -numeric -Stacked injection(GET型基于盲注的整型Order By从句堆叠注入)
    【sqli-labs】 less51 GET -Error based -Order By Clause -String -Stacked injection(GET型基于错误的字符型Order By从句堆叠注入)
    How to create a site with AJAX enabled in MVC framework.
    ASP.NET AJAX web chat application
    Asp.Net MVC4入门指南(1): 入门介绍
    跟我一起学习ASP.NET 4.5 MVC4.0 (转)
    VisualStudio2012轻松把JSON数据转换到POCO的代码(转)
    博客园自定义地址栏logo
    博客园侧边栏修改随笔分类为3D样式
    license.json
  • 原文地址:https://www.cnblogs.com/gfhh/p/11578766.html
Copyright © 2011-2022 走看看