Python 序列推倒式
创始人
2024-04-30 04:54:22
0

Python 推倒式

列表、集合和字典推导式

列表推导式是Python最受喜爱的特性之一

  • 它允许用户方便的从一个集合过滤元素,形成列表
  • 在传递参数的过程中还可以修改元素

语法如下

[expr for val in collection if condition]

等同于

result = []
for val in collection:if condition:result.append(expr)

filter条件可以被忽略,只留下表达式就行

'''给定一个字符串列表
过滤出长度在2及以下的字符串
并将其转换成大写
'''>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> [x.upper() for x in strings if len(x) > 2]
['BAT', 'CAR', 'DOVE', 'PYTHON']

用相似的方法,还可以推导集合和字典

dict_comp = {key-expr : value-expr for value in collection if condition}

'''返回字符串在列表中的位置
'''>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> {val : index for index, val in enumerate(strings)}
{'a': 0, 'as': 1, 'bat': 2, 'car': 3, 'dove': 4, 'python': 5}

集合的推导式与列表很像,只不过用的是尖括号

set_comp = {expr for value in collection if condition}

'''返回列表内字符串的长度
'''>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> {len(x) for x in strings}
{1, 2, 3, 4, 6}# map函数可以进一步简化
>>> set(map(len, strings))
{1, 2, 3, 4, 6}

嵌套列表推倒式

嵌套列表推导式看起来有些复杂
列表推导式的for部分是根据嵌套的顺序,过滤条件还是放在最后

'''将一个整数元组的列表扁平化成了一个整数列表
'''>>> some_tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> [x for tup in some_tuples for x in tup]
[1, 2, 3, 4, 5, 6, 7, 8, 9]# 等同于
>>> flattened = []
>>> for tup in some_tuples:
...     for x in tup:
...         flattened.append(x)
...
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...