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
      
  • 相关阅读:
    laravel phpstorm IDE 代码提示
    vue的样式绑定
    asp.net mvc视图中使用entitySet类型数据时提示出错
    Linq to SQL 中将数字转换为字符串
    jquery submit()不能提交表单的解决方法
    命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
    没有为扩展名“.cshtml”注册的生成提供程序
    WP REST API: 设置和使用OAuth 1.0a Authentication(原文)
    解决"要执行请求的操作,WordPress需要访问您网页服务器的权限"
    Mysql添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法
  • 原文地址:https://www.cnblogs.com/whkzm/p/11580577.html
Copyright © 2011-2022 走看看