1.生成器

  生成器的本质就是迭代器

  生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(),send():给上一个yield传值)

  生成器一般由生成器函数或者生成器表达式来创建

  其实就是手写的迭代器

2.生成函数

  和普通函数没有区别.里面有yield的函数就是生成器函数.

  生成器函数在执行的时候.默认不会执行函数题.返回生成器

  通过生成器的__next__()分段执行这个函数.

  send()给上一个yield传值,不能再开头(没有上一个yield),最后一个yield也不可以用send()

3.推导式

  1.列表推导式[结果 for循环 条件筛选]

  2.字典推导式{k:v for循环 条件筛选}

  3.集合推导式{k for循环 条件}

4.生成器表达式

  (结果 for循环 条件)

  特点:

    1.情性机制

    2.只能向前

    3.节省内存(鸡蛋)

1,用列表推导式做下列小题

  (1) 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

  (2) 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

  (3) 求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

  (4) 求出50以内能被3整除的数的平方,并放入到一个列表中。

  (5) 构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期',   'python8期', 'python9期', 'python10期']

  (6) 构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]

  (7) 构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 (8) 有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']

  (9)有以下数据类型:

  x = {
      'name':'alex',
      'Values':[{'timestamp':1517991992.94,
           'values':100,},
  
          {'timestamp': 1517992000.94,
          'values': 200,},
          {'timestamp': 1517992014.94,
           'values': 300,},
          {'timestamp': 1517992744.94,
           'values': 350},
          {'timestamp': 1517992800.94,
  
           'values': 280}
              ],}

将上面的数据通过列表推导式转换成下面的类型:[[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]

#
# (1)
lst = ['a','qwer','zxcv','','JQK']
li = [i for i in lst if len(i) >= 3]
print(li) # (2)
lst = [(x,y) for x in range(6) for y in range(6) if x % 2 ==0 and y % 2 ==1]
print(lst) # (3)
M = [[1,2,3],[4,5,6],[7,8,9]]
lst = [i[2] for i in M]
print(lst) # (4)
li = [i**2 for i in range(51) if i % 3 ==0]
print(li) # (5)
lst = ["python"+str(num) for num in range(1,11)]
print(lst) # (6)
li = [(x,x+1) for x in range(6)]
print(li) # (7)
lst = [i for i in range(19) if i % 2 ==0]
print(lst) # (8)
l1 = ['alex', 'WuSir', '老男孩', '太白']
l2 = [l1[i]+str(i) for i in range(4)]
print(l2) # (9)
x = {
'name':'alex',
'Values':[{'timestamp':1517991992.94,
'values':100,},
{'timestamp': 1517992000.94,
'values': 200,},
{'timestamp': 1517992014.94,
'values': 300,},
{'timestamp': 1517992744.94,
'values': 350},
{'timestamp': 1517992800.94,
'values': 280}
],}
li = [j for i in x["Values"] for j in i.values()]
print(li)

python 生成器和生成器表达式的更多相关文章

  1. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  2. python 特别的生成器表达式

    Ⅰ起因 学习python的同学通常会遇到这样一道经典生成器测试题: def gen(): for i in range(4): yield i base = gen() for n in (2,10) ...

  3. python day12 ——1.生成器2.生成器表达式 3.列表推导式

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

  4. Python学习笔记(4):容器、迭代对象、迭代器、生成器、生成器表达式

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

  5. 【学习笔记】--- 老男孩学Python,day13 生成器,生成器函数,各种推倒式和生成器表达式

    1. 生成器和生成器函数 生成器的本质就是迭代器 生成器的三种创建办法: 1.通过生成器函数 2.通过生成器表达式创建生成器 3.通过数据转换   2. 生成器函数: 函数中包含了yield的就是生成 ...

  6. python全栈开发-前方高能-生成器和生成器表达式

    python_day_13 今日主要内容1. 生成器和生成器函数生成器的本质就是迭代器生成器的三种创建办法: 1.通过生成器函数 2.通过生成器表达式创建生成器 3.通过数据转换 生成器函数: 函数中 ...

  7. Python入门-生成器和生成器表达式

    昨天我们说了迭代器,那么和今天说的生成器是什么关系呢? 一.生成器 什么是生成器?说白了生成器的本质就是迭代器. 在Python中中有三种方式来获取生成器. 1.通过生成器函数 2.通过各种推导式来实 ...

  8. 2018.8.13 python中生成器和生成器表达式

    主要内容: 1.生成器和生成器函数 2.列表推导式 一.生成器 生成器是指就是迭代器,在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也 ...

  9. Python的生成器和生成器表达式

    一,生成器和生成器表达式 什么是生成器,生成器实质就是迭代器,在python中有三种方式来获取生成器: 1. 通过生成器函数 和普通函数没有区别,里面有yield的函数就是生成器函数,生成器函数在执行 ...

  10. Python 进阶_生成器 & 生成器表达式

    目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & ...

随机推荐

  1. LeetCode OJ:Range Sum Query 2D - Immutable(区域和2D版本)

    Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper lef ...

  2. 在IE中MVC控制器中返回JSON格式的数据时提示下载

    最近做项目时,视图中用jquery.form.js异步提交表单时,接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如 ...

  3. linux生成随机密码的十种方法

    Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日期,并输出结 ...

  4. Lua的清屏快捷方式

    1. Lua (Command Line) 这里清屏的方式是: os.execute("cls") 就是执行了DOS中的清屏命令! 2.SciTE中的清屏方式: -----(1)第 ...

  5. linux 系统优化+定时任务

    安装软件 通过yum安装 自动补全工具:yum completion yum install -y tree bash-completion wget vim find -[TAB] 更改系统的yum ...

  6. 正确设置Firefox下载文件文件名的方法

    不同的浏览器需要特殊设置,主要是火狐比较特殊,火狐可能给文件名加上“%0d%0a"这样的编码字符(换行的意思).不得不佩服网上的高手,这也能解决. [HttpGet] public File ...

  7. RankNet

    RankNet 论文的笔记:Learning to rank using gradient descent. 模型 特征 \(\mathbf x_i \in \mathbb R^d\) 模型函数:\( ...

  8. 颜色叠加模式:mix-blend-mode

    文章转自叠加模式 http://www.cgspread.com/3551.html 注释:1.混合模式的数学计算公式,另外还介绍了不透明度.2.这些公式仅适用于RGB图像,对于Lab颜色图像而言,这 ...

  9. c语言标识符

    在程序中使用的变量名.函数名.标号等统称为标识符. 除库函数的函数名由系统定义外,其余都由用户自定义. C 规定,标识符只能是字母(A-Z,a-z).数字(0-9).下划线()组成的字符串,并且其第一 ...

  10. copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理

    copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议 ...