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)

最新文章

  1. AutoMapper搬运工之初探AutoMapper
  2. 利用Cayley-Hamilton theorem 优化矩阵线性递推
  3. SqlServer:传递超长字符串参数时,参数被自动换行。
  4. nginx初识
  5. VS2010 自动关闭的问题解决方法
  6. CDH4.1基于Quorum-based Journaling的NameNode HA
  7. 跟Android自带模拟器说拜拜,Mac Genymotion 使用心得
  8. Java 读取Properties 配置文件
  9. 线性规划||网络流(费用流):COGS 288. [NOI2008] 志愿者招募
  10. uva 11825 Hackers' Crackdown (状压dp,子集枚举)
  11. Chapter 2 Open Book——6
  12. 虚拟机——虚拟机VMware Workstation 的.vmdk格式与VirtualBox 的.vdi格式相互转换
  13. vs2017cpu占用过高解决方案
  14. 选择结构的三角关系Switch、Case、Default!!!
  15. 要想成为前端大神,那些你不得不知晓的web前端命名规范。
  16. 图解USB协议之一 枚举过程【转】
  17. SQL SERVER安装(2008)
  18. java 根据二叉树前序 ,中序求后续
  19. IPMI总结
  20. Maven手动添加依赖的jar文件到本地Maven仓库

热门文章

  1. volatile关键字解析(一)
  2. [转载]Spring源码下载地址
  3. Linux:history命令详解
  4. PHPStorm 使用正则批量查询替换并自动转换大小写的方法
  5. C# ListBox 子项数据更新
  6. IOS开发 arc与非Arc代码的区别
  7. 数据库备份mysqldump
  8. nodejs调用百度统计api摆脱人肉数据统计
  9. RabbitMQ Study
  10. ubuntu 添加应用到Dash启动器