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. 面试题四十三:在1~n整数中1出现的次数

    方法一:直观来看,遍历1到n,每个数去做%10的循环判断 int Number1_B_1toN( int n){ int sum=0; for(int i=1;i<=n;i++){ int k= ...

  2. 说出来也许你不信,我被 Linux 终端嘲笑了……

    人这一辈子,真的是非常不容易:读书时,被老师.同学嘲笑,工作时,被老板.同事嘲笑,就连出去撸个串儿,还可能被朋友嘲笑-- 这些也就算了,毕竟大家还都是同类,都是活生生的人.但是,你如果被 Linux ...

  3. 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

    一.安装配置 使用Composer安装依赖: composer require maatwebsite/excel 发布配置(可选): php artisan vendor:publish --pro ...

  4. 笑谈AlphaGo对战人类从模仿到超越之奥义

    起源 故事从一个围棋说起,人类赖以自豪的智慧,为什么这么说,因为据统计,从这19乘19的方格中摆棋,可以有10的340次方的可能,用一个更形象的比拟,全宇宙的原子加起来,也比这个数要小. 也就是说,如 ...

  5. SpringCloud Bus消息总线简介

    简介: SpringCloud Bus配合SpringCloud Config使用可以实现配置的动态刷新 SpringCloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了 ...

  6. 在excel中如何给一列数据批量加上双引号

    在实际开发中,会遇到这样的需求,大量的数据,需要从配置文件里读取,客户给到的枚举值是字符串,而配置文件里的数据,是json格式,需要加上双引号,这样就需要使用Excel来批量格式化一下数据. 客户给到 ...

  7. 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符“A”的个数,并将结果显示在屏幕上。

    问题 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符"A"的个数,并将结果显示在屏幕上. 代码 data ...

  8. PHP simplexml_load_string() 函数

    实例 转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然后输出对象的键和元素: <?php$note=<<<XML<note>高佣联盟 w ...

  9. 浅谈二分图的最大匹配和二分图的KM算法

    二分图还可以,但是我不太精通.我感觉这是一个很烦的问题但是学网络流不得不学它.硬啃吧. 人比较蠢,所以思考几天才有如下理解.希望能说服我或者说服你. 二分图的判定不再赘述一个图是可被划分成一个二分图当 ...

  10. bzoj 4305 数列的GCD

    LINK:数列的GCD 题意: 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], ...