1、列表推导式、字典推导式
"""
1、列表推导式:
作用:快速生成列表
需求1:如何快速生成一个["data0","data1",...,"data99"]的列表
语法:[y for x in xxx]
实现:['data{}'.format(i) for i in range(100)]
等价于:
list1 = []
for x in range(100):
y = 'data{}'.format(x)
list1.append(y)
解释:每遍历一次,就往列表中添加一个y
# 列表推导式
# 通过for循环实现
list1 = []
for i in range(100):list1.append('data{}'.format(i))
print("用foe循环实现,list1的值为:", list1)# 通过推导式实现
list2 = ['data{}'.format(i) for i in range(100)]
print("用列表推导式实现,list2的值为:", list2)
常用语法
需求2:如何快速生成一个["data1","data3",...,"data99"]的列表(全是奇数)(使用推导式+if进行过滤)
语法:[y for x in xxx if 条件]
实现:['data{}'.format(i) for i in range(100)if i % 2 == 1]
解释:每遍历一次,就去判断if条件是否成立,若条件成立就往列表中添加一个y
# 推导式+if进行过滤
list3 = ['data{}'.format(i) for i in range(100) if i % 2 == 1]
print("推导式+if进行过滤,list3的值为:", list3)# 等价于
list1 = []
for x in range(100):
if i % 2 == 1:y = 'data{}'.format(x)list1.append(y)
print(list1)
需求3:生成一个["data0","max1","data2","max3",...,"data98","max99"]的列表(推导式+三目运算符)
不同的条件,添加不同的值
语法:[v1 if 条件 else v2 for x in xxx]
实现:['max{}'.format(i) if i % 2 == 1 else 'data{}'.format(i) for i in range(100)]
解释:每遍历一次,就去判断if条件是否成立,若条件成立就往列表中添加一个v1,若条件不成立就往列表中添加一个v2
扩展:推导式里面同时使用if和三目运算符
语法:[三目运算符 for i in xxx if 过滤条件]
解释:每遍历一次,判断if条件是否成立,如果成立去执行三目运算并往列表中写值,如果不成立进入下次循环
建议:
从for循环开始写/看,方便理解和查看
# 推导式+三目运算符
list4 = ['max{}'.format(i) if i % 2 == 1 else 'data{}'.format(i) for i in range(100)]
print("推导式+三目运算符,list4的值为:", list4)# 等价于
list1 = []
for x in range(100):if i % 2 == 1:v1 = 'data{}'.format(x)list1.append(v1)else:v2 = 'max{}'.format(x)list1.append(v2)
print(list1)
拓展
# 三目运算符
# 语法: v1 if 条件 else v2
# res = v1 if 条件 else v2
# 等价于
# if 条件:
# res = v1
# else:
# res = v2
res = "ok" if 3 > 5 else "no ok"
print(res)# 集合推导式,集合不能存在重复数据,所以可以用来去重,集合散列(无序)
# {1,2,3,4,5}
# 语法:{i for i in xxx}
res = {i for i in range(10)}
print(res)
2、字典推导式
作用:快速生成字典
需求1:有一个列表li,把它转换为一个元素下标为键,值为元素值的字典格式的数据
li = ["a","b","c","d","e","f","g"]
转换之后的样式:dic = {0:"a",1:"b",....}
语法:{key:value for i in xx}
实现:{index: value for index, value in enumerate(li)}
等价于:
dic = {}
for index, value in enumerate(li):
dic[index] = value
解释:每遍历一次,就往字典中添加一个key:value键值对
# 需求1通过for循环实现
li = ["a", "b", "c", "d", "e", "f", "g"]
dic = {}
for index, value in enumerate(li):dic[index] = value
print("通过for循环实现需求1", dic)# 需求1通过内置函数实现
r = enumerate(li) # 获取li下标和索引
print("通过内置函数实现需求1", dict(r)) # 将li的下标和索引转化成list输出# 需求1使用字典推导式实现
dic2 = {index: value for index, value in enumerate(li)}
print("通过字典推导式实现需求1", dic2)
综合练习:使用字典推导式将下面字符串格式的数据,改造成字典类型的数据 cook_str="BIDUPSID=D0727533D7147B7;PSTM=1530348042;BAIDUID=B1005C9BC2EB28; sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402"
转换后的格式 res = {"BIDUPSID":"D0727533D7147B7","PSTM":"1530348042"....}
# 综合小练习
cook_str = "BIDUPSID=D0727533D7147B7;PSTM=1530348042; BAIDUID=B1005C9BC2EB28; \sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402"
# for循环实现
dic = {}
cook_str1 = cook_str.split(';')
for item in cook_str1:k = item.split('=')[0].strip() # strip()去空格的v = item.split('=')[1]dic[k] = v
print("综合小练习用for循环实现", dic)
# 推导式实现
res = {item.split('=')[0].strip(): item.split('=')[1] for item in cook_str.split(';')}
print("综合小练习用推导式实现", dic)
1、列表推导式、字典推导式相关推荐
- 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数
复习:1.迭代器:不需要索引的取值方式2.生成器:通过特殊的语法自定义的迭代器3.枚举对象:为可迭代对象创建索引(按照迭代的顺序创建索引) 迭代器对象:装有多个值的容器 1. 可用通过.__next_ ...
- 字典推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...
作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...
- python列表推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...
作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...
- 列表推导式、字典推导式、集合推导式
推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...
- python的各种推导式(列表推导式、字典推导式、集合推导式)
python的各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体 ...
- Python各种推导式(列表推导式,字典推导式,集合推导式,嵌套列表推导式)
一.列表推导式 Python官网列表推导式部分 列表推导式提供了一种创建list的简便方法.应用程序创建列表时,列表中的元素来源于其他序列.可迭代对象或创建的一个满足一定条件的序列. 基本格式: [ ...
- Python推导式comprehension:列表推导式、集合推导式、字典推导式
一.Python中的推导式 推导式comprehension,可以从一个数据序列构建另一个新的数据序列的结构体. 列表推导式 集合推导式 字典推导式 二.列表推导式 作用:用一个表达式创建一个有规律的 ...
- Python 推导式(列表推导式,字典推导式,集合推导式)
Python的各种推导式 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导. 列表推导式 字典推 ...
- 高阶函数、列表/集合/字典/推导式、递归函数
文章目录 高阶函数(map filter reduce sorted) map(处理数据) filter(过滤数据) reduce(计算数据) reduce(func,lst)实现的过程 sorted ...
最新文章
- 二叉树后序遍历-递归与非递归(左右根)
- 威斯康辛大学《机器学习导论》2020秋季课程完结,课件、视频资源已开放(附下载)...
- poj-1159 Palindrome **
- 美媒:中国大陆最火的工作,教人工智能识图
- 删除git commit 的 UserInterfaceState.xcuserstate 文件
- img src 本地图片_Java爬取简单的网页内容和图片
- Setting the Background Image for a List Control
- 输出素数和排序后的数组和杨辉三角
- 在变量前面加个叹号什么意思_a little表示很少,quite a little什么意思?形容数量多少的用法...
- Injection with CDI (Part I)
- 前端全栈必会node框架koa。。。
- TuxOnIce! 休眠到硬盘[zt]
- 语音信号预加重及matlab实现
- 树莓派默认密码_树莓派介绍:没有显示器,怎样远程控制树莓派?
- ps3自制linux,下BT聊QQ !PS3安装Linux ubuntu 7.10详细图文教程
- 善于学习——总结经验
- 浅析MultipartResolver
- Camera中onPreviewFrame()方法的视频方向旋转
- 基于python和Opencv将多张图片结合为一张图片的办法
- PHP通过HTTP_USER_AGENT判断是否为手机移动终端的函数
热门文章
- android运行activity时报 Unfortunately,TestLayout has stopped 问题
- bootstrap结合chosen组件实现select可搜索功能
- 路由器密码忘记 五步暴力破解
- apt-get install r-base出现有几个软件包无法下载
- 计算机网络实践之元气骑士公网异地联机(二) 两种方案可行性分析
- 产品经理工作相关软件
- “宗师珐琅,艺术之旅”在京召开,张同禄最后手稿作品惊艳亮相。
- 全球及中国麦克风电源行业市场发展趋势与投资战略规划研究报告2022-2028年
- 牛客挑战赛36 - 纸飞机
- STM32中断控制LED灯亮灭