从母鸡下蛋的故事讲起

 老母鸡 = ('鸡蛋%s'%i for i in range(10))
print(老母鸡)
for 蛋 in 老母鸡:
print(蛋)
g = (i*i for i in range(10))
for i in g:
print(i)

①把列表解析的[]换成()得到的就是生成器表达式

②列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更加节省内存空间

③Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。

  例如sum函数是python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议。

 sum(i*2 for i in range(4))

1.列表推导式

例一:30以内所有能被3整除的数  

 # 列推导式
# [满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件]
# 30以为所有能被3整除的数字
print([i for i in range(30) if i%3 == 0]) # 完整的列表推导式

例二:30以内所有能被3整除的数的平方

 # 30以为所有能被3整除的平方
print([i*i for i in range(30) if i%3 == 0]) # 完整的列表推导式

例三:找到嵌套列表中名字包含‘e’的所有名字

 # 找到嵌套列表中名字中含有'e'的所有名字
names = [['Tom','Billy','Jefferson','Andrew','Wesley','Steven','Joe'],
['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]
ret = [name for lst in names for name in lst if name.count('e') == 2]
print(ret)

2.字典推导式

例一:将一个字典的key和value对调

 # 将一个字典的key和value对调
mcase = {'a':10,'b':34}
mcase_frequency = {mcase[k]:k for k in mcase}
print(mcase_frequency)

例二:合并大小写对应的value值,讲key统一成大写

 # 合并大小写对应的value值,将key统一成小写
# {'a':10+7,'b':34,'z':3}
mcase = {'a':10,'b':34,'A':7,'Z':3}
mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0) for k in mcase}

3.集合推导式

例子:计算列表中每个值的平方,自带去重复的功能

 # 集合推导式 自带去重功能
squared = {x**2 for x in [1,-1,2]}
print(squared)

最新文章

  1. 2.头文件<bits/stdc++.h>
  2. 与你相遇好幸运,Sail.js其他字段查询
  3. A trip through the Graphics Pipeline 2011_05
  4. sublime txt 设置在浏览器预览
  5. http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html
  6. 215. Kth Largest Element in an Array
  7. C++三大库boost、loki、stlport
  8. centos 服务器配置(一) 之端口占用
  9. SGU 解题报告
  10. NodeJS with Express 4.x
  11. POJ3189_Steady Cow Assignment(二分图多重匹配/网络流+二分构图)
  12. PSU 离11.2.0.3.0 -> 11.2.0.3.11 如果解决冲突的整个
  13. C++数据
  14. DDD理论学习系列(5)-- 统一建模语言
  15. OSW 快速安装部署
  16. LaTex计数器
  17. 关于a[i]++和a[i++]说明
  18. 2018-2019-2 20165319 《网络对抗技术》 Exp5:MSF基础应用
  19. Java集合类(转自hey平平)
  20. MySQL(介绍,安装,密码操作,权限表)

热门文章

  1. php 统计每天价格,货币种类,汇总得算法和数据处理 (后端和前段实现自动统计价格和币种类型)
  2. spring cloud gateway 拦截request Body
  3. Chrome-谷歌页面翻译增强插件开发
  4. MongoDB 3.6 开启慢查询
  5. 用shell脚本实现MongoDB数据库自动备份
  6. CET-6 分频周计划生词筛选(Week 1)
  7. CSS深入理解line-height
  8. (4.10)sql server导入导出
  9. redis缓存架构-02-两种持久化机制(RDB和AOF)
  10. 排列组合( Lindström–Gessel–Viennot lemma 定理)