"""
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、列表推导式、字典推导式相关推荐

  1. 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数

    复习:1.迭代器:不需要索引的取值方式2.生成器:通过特殊的语法自定义的迭代器3.枚举对象:为可迭代对象创建索引(按照迭代的顺序创建索引) 迭代器对象:装有多个值的容器 1. 可用通过.__next_ ...

  2. 字典推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...

    作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...

  3. python列表推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...

    作者:苍松 原文:https://www.cnblogs.com/tkqasn/p/5977653.html 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可 ...

  4. 列表推导式、字典推导式、集合推导式

    推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...

  5. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  6. python的各种推导式(列表推导式、字典推导式、集合推导式)

    python的各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体 ...

  7. Python各种推导式(列表推导式,字典推导式,集合推导式,嵌套列表推导式)

    一.列表推导式 Python官网列表推导式部分 列表推导式提供了一种创建list的简便方法.应用程序创建列表时,列表中的元素来源于其他序列.可迭代对象或创建的一个满足一定条件的序列. 基本格式: ​[ ...

  8. Python推导式comprehension:列表推导式、集合推导式、字典推导式

    一.Python中的推导式 推导式comprehension,可以从一个数据序列构建另一个新的数据序列的结构体. 列表推导式 集合推导式 字典推导式 二.列表推导式 作用:用一个表达式创建一个有规律的 ...

  9. Python 推导式(列表推导式,字典推导式,集合推导式)

    Python的各种推导式 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导. 列表推导式 字典推 ...

  10. 高阶函数、列表/集合/字典/推导式、递归函数

    文章目录 高阶函数(map filter reduce sorted) map(处理数据) filter(过滤数据) reduce(计算数据) reduce(func,lst)实现的过程 sorted ...

最新文章

  1. 二叉树后序遍历-递归与非递归(左右根)
  2. 威斯康辛大学《机器学习导论》2020秋季课程完结,课件、视频资源已开放(附下载)...
  3. poj-1159 Palindrome **
  4. 美媒:中国大陆最火的工作,教人工智能识图
  5. 删除git commit 的 UserInterfaceState.xcuserstate 文件
  6. img src 本地图片_Java爬取简单的网页内容和图片
  7. Setting the Background Image for a List Control
  8. 输出素数和排序后的数组和杨辉三角
  9. 在变量前面加个叹号什么意思_a little表示很少,quite a little什么意思?形容数量多少的用法...
  10. Injection with CDI (Part I)
  11. 前端全栈必会node框架koa。。。
  12. TuxOnIce! 休眠到硬盘[zt]
  13. 语音信号预加重及matlab实现
  14. 树莓派默认密码_树莓派介绍:没有显示器,怎样远程控制树莓派?
  15. ps3自制linux,下BT聊QQ !PS3安装Linux ubuntu 7.10详细图文教程
  16. 善于学习——总结经验
  17. 浅析MultipartResolver
  18. Camera中onPreviewFrame()方法的视频方向旋转
  19. 基于python和Opencv将多张图片结合为一张图片的办法
  20. PHP通过HTTP_USER_AGENT判断是否为手机移动终端的函数

热门文章

  1. android运行activity时报 Unfortunately,TestLayout has stopped 问题
  2. bootstrap结合chosen组件实现select可搜索功能
  3. 路由器密码忘记 五步暴力破解
  4. apt-get install r-base出现有几个软件包无法下载
  5. 计算机网络实践之元气骑士公网异地联机(二) 两种方案可行性分析
  6. 产品经理工作相关软件
  7. “宗师珐琅,艺术之旅”在京召开,张同禄最后手稿作品惊艳亮相。
  8. 全球及中国麦克风电源行业市场发展趋势与投资战略规划研究报告2022-2028年
  9. 牛客挑战赛36 - 纸飞机
  10. STM32中断控制LED灯亮灭