python Day12

  • 生成器python社区,生成器与迭代器看成一种。生成器的本质就是迭代器。

    区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。

    • 获取生成器的三种方式:
      • 生成器函数

        def func():
        print(111)
        print(222)
        yield 3
        ret=func()
        print(next(ret))
        ##一个next对应一个yeid
      • 生成器表达式

      • python内部提供一些

    • Return和yield的区别

      • return :函数中只存在一个return结束函数,并且给函数的执行者返回值

      • yield:只要函数中有yield那么它就是生成器函数而不是函数了,生成器函数中可以存在多*个yield,一个yield对应一个next,yield不会结束生成器函数

        ###以生产包子的模型为列子,迭代器是直接生成5000个包子
        def func():
        l1=[]
        for i in range(1,5001):
        l1.append(f'{i}号包子')
        return l1
        print(func())
        def gen_fuc():
        for i in range(1,5001):
        yield f'{i}号包子'
        ret=gen_fuc()
        #这里需要100个包子
        for i in range(100):
        print(next(ret))
        #满足惰性机制,保留循环
      • yield from将返回的列表变成了迭代器

        def func():
        l1=[1,2,3,4,5]
        yield from l1
        ret=func()
        print(next(ret))
        print(next(ret))
    • 列表推导式(用一行代码构建一个比较复杂并且有规律的列表)
      • 循环筛选模式:[变量(加工后的变量)for 变量 in iterable]

        list=[i*3 for i in range(11)]
        print(list)
      • 筛选模式:[变量(加工后的变量)for 变量 in iterable if 条件]

        list=[i  for i in range(11) if i%2!=0]
        print(list)
      • 多循环模式

        ##将列表中含有两个ee的字符串筛选出来
        name=[["sfdsferwerwew","rewrew3","dfsfsfff"],["Ffdsdfsf","3rewttreedsd","fseww"]]
        list_name=[j for i in name for j in i if j.count("e")==2 ]
        print(list_name)
    • 生成器表达式(与列表推导式的写法几乎一模一样只有写法中将[],换成())
      list=[1,23,4]
      list=(i for i in list)
      print(next(list))
      ##结果是 1
      ##有点是十分的节省内存
  • 内置函数

    • eval 剥去字符串的外衣运算里面的代码

      s1="1+3"
      print(eval(s1))
      ###结果是 4
  • 作业

    • 有数据x={"name":"zhuxiayu","value":[{'timestmp':1343252532.09,"Value":100},{'timestmp':23252532.09,"Value":200}]}通过列表推导式转化为[[1343252532.09, 100], [23252532.09, 200]]

      x={"name":"zhuxiayu","value":[{'timestmp':1343252532.09,"Value":100},{'timestmp':23252532.09,"Value":200}]}
      list2=[[dit["timestmp"],dit["Value"]] for dit in x["value"]]
      print(list2)
    • 构建一个列表,列表里面是三种不同的尺寸,每个尺寸都有两种颜色

      colors=["white","black"]
      sizes=["S","M","L"]
      list=[ (size,color)for size in sizes for color in colors]
      print(list)
      ###结果:[('S', 'white'), ('S', 'black'), ('M', 'white'), ('M', 'black'), ('L', 'white'), ('L', 'black')]
    • 看代码求结果

      def demo():
      for i in range(4):
      yield i
      g=demo()
      g1=(i for i in g)
      g2=(i for i in g1) print(list(g1))
      print(list(g2))
      ###结果[0, 1, 2, 3]
      ## []

python基础 Day12的更多相关文章

  1. Python之路【第二篇】:Python基础

    Python基础 对于Python,一切事物都是对象,对象基于类创建 所以,以下这些值都时对象:"zhurui".22.['北京','上海','深圳'],并且是根据不同的类生成的对 ...

  2. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  3. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  4. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  5. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  6. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  7. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  8. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  9. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

随机推荐

  1. Object#wait()与Object#wait(long)的区别

    例子 例1 最基础的等待-通知 下面一个例子,一个线程"waiting"在同步代码块调用了Object#wait()方法,另一个线程"timedWaiting" ...

  2. Python2.7 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed 问题解决

    # 报错信息 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.insta ...

  3. KMP算法图解

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  4. Python unichr() 函数

    描述 unichr() 函数 和 chr() 函数功能基本一样, 只不过是返回 unicode 的字符.高佣联盟 www.cgewang.com 注意: Python3 不支持 unichr(),改用 ...

  5. PHP xml_parser_set_option() 函数

    定义和用法 xml_parser_set_option() 函数为 XML 解析设置选项.高佣联盟 www.cgewang.com 如果成功,该函数则返回 TRUE.如果失败,则返回 FALSE. 语 ...

  6. 4.9 省选模拟赛 划分序列 二分 结论 树状数组优化dp

    显然发现可以二分. 对于n<=100暴力dp f[i][j]表示前i个数分成j段对于当前的答案是否可行. 可以发现这个dp是可以被优化的 sum[i]-sum[j]<=mid sum[i] ...

  7. Pintech品致-高压放大器

      pintech品致推出的HA-520(200KHz,500Vp-p)高压放大器真的是实用的高电压信号放大器, 体积小,轻便及简易的操作, 高电压输出(800Vp-p)等优点.连续输出电流量最大值达 ...

  8. samba服务及配置

    samba 目录 samba 1. samba简介 2. samba访问 配置示例 3.搭建用户认证共享服务器 4.搭建匿名用户共享服务器 1. samba简介 Samba是在Linux和UNIX系统 ...

  9. Java动态代理(AOP)

    目录 一.代理 1. 什么是代理? 2. 使用代理模式的作用 3. 实现代理的方式 二.静态代理 1. 模拟用户购买u盘 2. 静态代理的缺点 三.动态代理 四. JDK 动态代理 1. Invoca ...

  10. 初学者都在坑里!不要在Python中使用“+”来连接字符串

    很多初学者都像我一样,最开始使用Python时,会不自觉地使用“+”来连接字符串,就像在许多其他编程语言(比如Java)中那样,因为这样既直观又容易. 但我很快意识到成熟的开发人员似乎更喜欢使用.jo ...