python(列表推导式和生成器表达式)
2024-09-02 10:09:27
从母鸡下蛋的故事讲起
老母鸡 = ('鸡蛋%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)
最新文章
- 2.头文件<;bits/stdc++.h>;
- 与你相遇好幸运,Sail.js其他字段查询
- A trip through the Graphics Pipeline 2011_05
- sublime txt 设置在浏览器预览
- http://jingyan.baidu.com/article/636f38bb3eb78ad6b8461082.html
- 215. Kth Largest Element in an Array
- C++三大库boost、loki、stlport
- centos 服务器配置(一) 之端口占用
- SGU 解题报告
- NodeJS with Express 4.x
- POJ3189_Steady Cow Assignment(二分图多重匹配/网络流+二分构图)
- PSU 离11.2.0.3.0 -&;gt; 11.2.0.3.11 如果解决冲突的整个
- C++数据
- DDD理论学习系列(5)-- 统一建模语言
- OSW 快速安装部署
- LaTex计数器
- 关于a[i]++和a[i++]说明
- 2018-2019-2 20165319 《网络对抗技术》 Exp5:MSF基础应用
- Java集合类(转自hey平平)
- MySQL(介绍,安装,密码操作,权限表)
热门文章
- php 统计每天价格,货币种类,汇总得算法和数据处理 (后端和前段实现自动统计价格和币种类型)
- spring cloud gateway 拦截request Body
- Chrome-谷歌页面翻译增强插件开发
- MongoDB 3.6 开启慢查询
- 用shell脚本实现MongoDB数据库自动备份
- CET-6 分频周计划生词筛选(Week 1)
- CSS深入理解line-height
- (4.10)sql server导入导出
- redis缓存架构-02-两种持久化机制(RDB和AOF)
- 排列组合( Lindstr&#246;m–Gessel–Viennot lemma 定理)