zoukankan      html  css  js  c++  java
  • day 13

    day 13

    01.迭代器

    1. 可迭代对象

      迭代器只是一种称呼

      # 可迭代对象;含有.__iter__方法的数据类型就叫做可迭代对象
      # 字符串、列表、元组、字典、集合、文件。都是可迭代对象(现阶段)
      # .__iter__()方法将可迭代对象转换成迭代器对象
      
    2. 迭代器对象

      同可迭代对象一样,这也是对拥有该种特性的数据类型的称呼

      迭代器对象和函数对象一样不能直接打印,需要通过方法使用

      # 迭代器对象;同时含有.__iter__和.__next__方法的对象叫做迭代器对象
      # 文件是原生的迭代器对象,其他的对象都要经过.__iter__方法进行转换
      # 迭代器对象使用.__iter__()方法后没有变化
      # .__next__()是对迭代器对象的使用方法
      

      迭代器对象;提供了一种不依靠索引取值的手段

      # 通过.__iter__()命令将可迭代对象内的元素按照顺序放入一个新开启的内存空间中
      # 通过.__next__()命令将此空间内的元素按照顺序一一取出且每个元素都只能取出一次
      

    02.三元表达式

    x=10
    y=20
    if x>y:
      print(x)
    else:
      print(y)
    # 三元表达式
    print(x if x>y else y)
    # 条件在中间,成立打印if前面的,否则打印else后面的
    

    03.列表推导式

    # 通过for循环将0到9写入到一个空列表当中
    lt=[i*3 for i in range(10)]  # 可以对i进行修饰
    st='123456'
    lt=[int(i)**2 for i in st]
    此推导式和下面的for循环效果相同
    lt=[]
    for i in st:
      j=int(i)
      lt.append(j**2)
    

    04.字典生成式

    zip 的使用
    st1='123456'
    st2='abcdefasdf'
    y=zip(st1,st2) # y相当于一个特殊的迭代器对象一样,他会将两个变量内的元素按照位置顺序生成一个个元组,当其中一方元素用尽时停止。
    
    
    
    st1='123456'
    st2='abcdefasdf'
    dic={k:v for k,v in y}
    # dic={'1': 'a', '2': 'b', '3': 'c', '4': 'd', '5': 'e', '6': 'f'}
    

    05.生成器生成式

    generator 生成器本质是一个迭代器 --》自定义的一个迭代器

    lt=[i for i in range(10000000)]
    print(lt) # 此时就会占用大量的内存
    
    g=(i for i in range(10000000))
    print(g)
    for i in g:
      print(i) # 这样在使用时就会一步步运行,想用多少取多少,节省空间
    

    06.生成器

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

    # 自定义一个简单的range方法
    def range(*args):
        if len(args)==2:
            x,y=args
            while x<y:
                yield x
                x+=1
        elif len(args)==3:
            x,y,z=args
            while x < y:
                yield x
                x += z
        else:
            count=0
            while count<args[0]:
                yield count
                count+=1
    
    for i in range(2,20,3):
      print (i)
    # 效果与内置方法中的range使用相同
    for i in range(2,20,3):
      print (i)  # 结果相同
    
    1. yield于return的区别

      1. yield

        暂停函数,多个yield都可以运行

        通过next取值

      2. return

        终止函数

        动过调用函数拿到返回值

    07.递归

    递归就是在函数内部调用该函数

    def age(x):
        if x==0:
            return 18
        x-=1
        return age(x)+2
    res=age(10)
    print(res)
    
  • 相关阅读:
    nginx 安装教程
    php 安装教程
    第一个AWK程序的尝试
    memcached-tool 工具
    java数据库 DBHelper
    Innodb的三大关健特性
    我遇到的一个ClassNotFoundException问题
    storm学习初步
    再探 jQuery
    简单聊一聊正则表达式中的贪婪匹配和非贪婪匹配
  • 原文地址:https://www.cnblogs.com/luocongyu/p/11580485.html
Copyright © 2011-2022 走看看