zoukankan      html  css  js  c++  java
  • 函数进阶 2------总结

    迭代器

    迭代器可以说成是重复,并且每一次的重复都是基于上一次的结果来的。

    可迭代对象

    python中一切皆对象,对这一切思想中,但凡有_iter_方法的对象,都是可迭代对象。

    但是需要注意的是,数字类型的不是可迭代对象。

    含有_____________iter_______________和___________next______方法的对象就是迭代器对象

    有迭代器对象的目的:提供了不依赖索引取值的手段

    it = [1,2,3,4]
    it.__iter__()
    
    tup = (1,2,3,4)
    it.__iter__()
    
    dic = {'a':1}
    dic.__iter__()
    
    se = {1}
    se.__iter__()
    
    fw = open('test.txt','at',encoding='utf8')
    fw.seek(0,0)
    fw.__iter__()
    

    迭代取值的方法是基于上一个值来进行一行行取值。

    it_iter = iter.__iter__()
    print(it_iter.__next+__())
    
    s = [1,2,3,4,5]
    s = s.__iter__()
    
    第一种打印方法:
    # print(s.__next__())
    # print(s.__next__())
    # print(s.__next__())
    # print(s.__next__())
    # print(s.__next__())
    注:在列表内的值不够的时候,会提示StopIteration的报错
    
    第二种方法:解释for循环的原理
    while True:
        try:
            print(s.__next__())
    
        except StopIteration:
            break
    
    在执行到报错的时候会自动运行break
    

    注:迭代器的主要作用就是来取值,他只能一行一行向后取取值,过于麻烦,而且在值取完之后就没有了,而且无法使用len()方法获取长度。

    三元表达式

    又称三目表达式,当条件成立走这里if条件,条件不成立走else调价

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

    字典生成式

    创建字典的两种方法:
    例1:for循环生成
    dic = {}
    
    for i in range(10):
        dic[i] = i
    
    print(dic)
    
    例2:zip生成
    lt1 = ['a', 'b', 'c']
    lt2 = [1, 2, 3]
    
    dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
    print(dic)
    

    生成器

    定义:含有yield关键字的函数叫做生成器。一个yelid相当于 一个next,暂停函数。

    关于yeild与return特性的去区别

    yeild的特性:

    1.暂停函数

    2.通过next取值,一个yeild相当于一个next。

    return的特性:

    1.终止函数

    2.通过调用函数拿到值

    递归

    • 什么是递归

      函数内部直接调用函数本身

      # 递归:
      # 1. 函数内部调用函数自己
      # 2. 必须要有退出条件
      # 3. 递归必须要有规律
      
    • import sys
      sys.setrecursionlimit(10) #设置最大递归次数
      print(sys.getrecursionlimit())
      
    • def a():
          x = 1
          print(x)
          a()
      a()
      
      #每一次递归不会结束函数,并且每一次递归都会开辟内存空间,如果一直开辟内存就炸掉了,所以最多递归1000次左右。
      
    • # 玉阳 20岁 ; 后面的同学大2岁,后面的后面的同学比后面的同学大2岁; 求第6位同学的年龄
      
      '''
      res = 30 
      res = 28 + 2
      res = 26 + 2 + 2
      res = 24 + 2 + 2 + 2
      res = 22 + 2 + 2 + 2 + 2
      res = 20 + 2 + 2 + 2 + 2 + 2
      res = 18 + 2 + 2 + 2 + 2 + 2 + 2
      '''
      
      def age(x):
          if x == 0:
              return 18
          x -= 1
          return age(x) + 2
      
      
      res = age(6)
      print(res)  # 32
      
  • 相关阅读:
    Win10新建文件不自动刷新
    解决 Win10 系统新建文件夹后需手动刷新才能显示
    新建的文件需要刷新才能看见怎么办?
    win7、win10系统电脑开机后小键盘灯不亮怎么办?
    VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
    如何把VMware Workstation使用的虚拟SCSI磁盘转换成虚拟IDE硬盘
    bat批处理文件怎么将路径添加到path环境变量中
    在Windows下使用svn命令行教程及svn命令行的解释
    php正确解码javascript中通过escape编码后的字符
    采集/自动登录啊都可以用这两个方法实现 asp.net
  • 原文地址:https://www.cnblogs.com/whkzm/p/11580577.html
Copyright © 2011-2022 走看看