# 1.生成器的本质就是迭代器

# 2.通过函数变成一个生成器

# def func(): #      print(1) #      yield 5  # 我的函数走到这了 #      print(2) #      yield 9  # 我的函数走到这了 #  # g = func()  # 生成一个生成器

# print(g.__next__()) # print(g.__next__()) # print(list(range(10000)))

# def func():  #     print(1) #      # return 5 #      yield 5 # print(func().__next__())   # 这样生成一个生成器  # print(func().__next__())   # 这样生成一个生成器 # print(func().__next__())   # 这样生成一个生成器 # print(func().__next__())  # 这样生成一个生成器

# 函数体存的是代码

# 1.语法分析

# 2.语义分析

# 3.词法分析

# python2  next() iter()

# python3  next() __next__() iter()  __iter__()

# 大批量的数据的时候首先要想到生成器

# def func():  #     print(1) #          yield 5  # 我的函数走到这了  #     print(2) #          yield 9  # 我的函数走到这了  # # g = func()  # 生成一个生成器  # print(g.__next__())  # print(g.__next__())

# 碰到return就结束函数 # 碰到yield不结束就挂起 # 生成器的好处,非常节省内存

# def func():
# print(1)
# a = yield 2 # 1.挂起 2.返回值 3.接受值
# print(a) # '123'
# print(3)
# b = yield 4
# print(b) #'234'
# c = yield 9
#
# g = func()
#
# print(g.__next__()) #1 2 g.send(None)
# print(g.send('123')) # send = next+传值
# print(g.send('234')) # send = next+传值
# # 第一次调用生成器的时候使用send里边的值必须是None

# print(g.send('123'))  # send = next+传值 # print(g.send('234'))  # send = next+传值 # # 第一次调用生成器的时候使用send里边的值必须是None

# def func():
# yield 1
# yield 2
#
# g = func()
# ret = g.__next__()
# print(ret+4)
# print(g.__next__()) # def func():
# li = [1,2,3,4]
# # yield li
# yield from li
#
# ret = func() # 把生成器的地址给了ret
# print('is ret',ret.__next__())
# # 执行ret这个变量的指向的生成器地址
# print('is ret',ret)
# # 在全局空间找到一个变量叫做ret的,打印它的值 值就是生成器的地址

# # 执行ret这个变量的指向的生成器地址 # print('is ret',ret) # # 在全局空间找到一个变量叫做ret的,打印它的值 值就是生成器的地址

# def func(): #     li = [1,2,3,4] #     l2 = [5,6,7,8] #     # yield from li #     # yield from l2 #     for i in li: #         yield i # #     for em in l2: #         yield em # # ret = func()  # 把生成器的地址给了ret # print('is ret',ret.__next__()) # print('is ret',ret.__next__()) # print('is ret',ret.__next__()) # print('is ret',ret.__next__()) # print('is ret',ret.__next__())

# 总结:

#     1.生成器的本质就是一个迭代器

#     2.生成器一定是一个迭代器,迭代器不一定是一个生成器

#     3.生成器是可以让程序员自己定义的一个迭代器 #

4.生成器的好处,节省内存空间 #

5.生成器的特性 一次性的,惰性机制,从上向下 #

6.send相当于 next+传值,第一次触生成器的时候,如果使用send(None) #         值必须是None,一般我建议你们使用__next__ #

7.    python2 iter()  next() #           python3 iter()  next()  __next__() __iter__() #

8.yield from 将可迭代对象元素逐个返回

# 列表推导式

# 列表推导式
# li = []
# for i in range(10):
# li.append(i)
# print(li) # print([i for i in range(10)])
# [结果 语法] #容器

li = [] # for i in range(10): #     if i%2 == 1: #         li.append(i) # print(li)


# print([i for i in range(10) if i%2 == 0])  # 过滤(筛选)


# li = [] # for i in range(10): #     for em in range(3): #         li.append(em) # print(li)


# print([j for i in range(10) for em in range(3) for j in range(5)])


# 集合推导式

# 集合推导式
# s = {i for i in range(10)}
# print(s) # {结果 语法} 容器

# {结果 语法} 容器

# 字典推导式:

# print({i:i+1 for i in range(10)})

# print(type({1,2,32,4}))

# g = (i for i in range(10))

# {'1':1,'2':2} # {'1','2'}

# {1:2,2:3,3:4} # {'美女':1999,1999:2}

# 推导式:\

# 1.列表

# 2.集合

# 3.字典

# 1.生成器推导式

# 1.生成器: # 总结:

#     1.生成器的本质就是一个迭代器

#     2.生成器一定是一个迭代器,迭代器不一定是一个生成器

#     3.生成器是可以让程序员自己定义的一个迭代器

#     4.生成器的好处,节省内存空间

#     5.生成器的特性 一次性的,惰性机制,从上向下

#     6.send相当于 next+传值,第一次触生成器的时候,如果使用send(None)     #         值必须是None,一般我建议你们使用__next__     #     7.    python2 iter()  next()     #           python3 iter()  next()  __next__() __iter__()

#     8.yield from 将可迭代对象元素逐个返回

# 2.推导式: #     总结:         # 列表         # 集合 {1,2,3}         # 字典 {1:2,2:4}

# 看着像元组的其实是一个 生成器推导式

# 1.外部需要容器包一下,里边第一个位置 结果 剩下位置都是语句

# 2.推导式 -- 面试  实现小的需求时可以使用推导式,推导式节省代码

# 3.推导式不要写太长,可读性查.

12生成器,send,推导式的更多相关文章

  1. python note 12 生成器、推导式

    1.生成器函数 # 函数中如果有yield 这个函数就是生成器函数. 生成器函数() 获取的是生成器. 这个时候不执行函数# yield: 相当于return 可以返回数据. 但是yield不会彻底中 ...

  2. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  3. python学习笔记:第12天 列表推导式和生成器

    目录 1. 迭代器 2. 推导式 1. 迭代器 什么是生成器呢,其实生成器的本质就是迭代器:在python中有3中方式来获取生成器(这里主要介绍前面2种) 通过生成器函数获取 通过各种推导式来实现生成 ...

  4. Python【day 12】生成器和推导式

    一.生成器和生成器函数1.生成器和生成器函数的概念 1.生成器的本质是迭代器 2.函数中包含yield,就是生成器函数 2.生成器函数的写法 def func(): a =10 yield 20 ge ...

  5. Python生成器、推导式之前襟后裾

    生成器 函数体内有yield选项的就是生成器,生成器的本质是迭代器,由于函数结构和生成器结构类似,可以通过调用来判断是函数还是生成器,如下: def fun(): yield "我是生成器& ...

  6. python基础(9)-迭代器&生成器函数&生成器进阶&推导式

    迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭 ...

  7. python全栈开发 生成器 :生成器函数,推导式及生成器表达式

    python 全栈开发 1.生成器函数 2.推导式 3.生成器表达式 一.生成器函数 1.生成器: 生成器的本质就是迭代器 (1)生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(), ...

  8. python基础学习笔记——生成器与推导式

    生成器 首先我们来看看什么是个生成器,生成器本质就是迭代器 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 首先,我们先 ...

  9. python 生成器函数.推导式.生成器表达式

    一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...

随机推荐

  1. Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值

    参考链接:https://blog.csdn.net/lander_xiong/article/details/79018737

  2. pythonのdjango连接MYSQL

    在py3.*中利用django使用mysql时,会出现一些问题.由于django默认的是 MySQLdb,但MySQLdb目前不支持py3.*所以我们要改用pymysql,首先要安装pymysql,命 ...

  3. CF1153E Serval and Snake

    题目地址:CF1153E Serval and Snake 这是一道交互题 由于只需要确定起点和终点 你选择的矩形会将整个矩形分成的两个部分 如果起点和终点在同一个部分里,那么很显然回答应该是个偶数 ...

  4. GMM与EM共舞

    GMM,即高斯混合模型(Gaussian Mixture Model),简单地讲,就是将多个高斯模型混合起来,作为一个新的模型,这样就可以综合运用多模型的表达能力.EM,指的是均值最大化算法(expe ...

  5. 网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]

    本文中  N为点数,M为边数: EK: (brute_force) : 每次bfs暴力找到一条增广路,更新流量,代码如下 : 时间复杂度:O(NM²): #include<bits/stdc++ ...

  6. 51nod 1228、1258 序列求和

    这里一次讲两题...貌似都是板子? 所以两题其实可以一起做 [雾 noteskey 总之就是伯努利数的两道入门题啦,就是第二道有点鬼畜了,居然要任意模数的!(好吧是 1e9+7 但也没什么区别了) 伯 ...

  7. RFB Net笔记

    ECCV2018 论文:Receptive Field Block Net for Accurate and Fast Object Detection 论文链接:https://arxiv.org/ ...

  8. Django—入门

    索引 1.搭建环境 2.创建项目 3.设计模型 4.管理站点 5.视图及URL 6.模板 软件框架 问题1:什么是软件框架? 举个简单的例子,对于一个公司来说,公司中有各个职能部门,每个部门各司其职, ...

  9. 加载Assetbundle需要注意的地方

    WWW:异步实现,手机上不能用于同步代码,需要监测其完成状态.不用www.dispose. CreateFromFile:阻塞,但是移动平台上面的路径格式有点坑,没时间看,不用. 以下两个方式需要先使 ...

  10. .net core 2.x - 日志 - to elasiticsearch

    记录日志到elasticsearch(es),下面简写es,然后我们可以通过kibana可视化的观察日志信息以及统计分析等. 1.起源 年中旬时候,公司有个需求是需要分析用户的地址,需要先分词处理然后 ...