Python: 序列: 过滤序列元素
问题: 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列
answer:
eg1:列表推导
最简单的过滤序列元素的方法就是使用列表推导。比如:
>>> mylist = [1, 4, -5, 10, -7, 2, 3, -1]
>>> [n for n in mylist if n > 0]
[1, 4, 10, 2, 3]
>>> [n for n in mylist if n < 0]
[-5, -7, -1]
eg2:生成器表达式迭代
使用列表推导的一个潜在缺陷就是如果输入非常大的时候会产生一个非常大的结果集,占用大量内存。如果你对内存比较敏感,那么你可以使用生成器表达式迭代产生过滤的元素。比如:
>>> pos = (n for n in mylist if n > 0)
>>> pos
<generator object <genexpr> at 0x1006a0eb0>
>>> for x in pos:
... print(x)
...
1
4
10
2
3
eg3: filter()
有时候,过滤规则比较复杂,不能简单的在列表推导或者生成器表达式中表达出来。比如,过滤的时候需要处理一些异常或者其他复杂情况。可以将过滤代码放到一个函数中,然后使用内建的filter() 函数
>>>values = ['1', '2', '-3', '-', '4', 'N/A', '5']
>>>def is_int(val):
... try:
... x = int(val)
... return True
... except ValueError:
... return False
>>>ivals = list(filter(is_int, values))
>>>print(ivals)
# Outputs ['1', '2', '-3', '4', '5']
filter() 函数创建了一个迭代器,因此如果你想得到一个列表的话,就得像示例那样使用list() 去转换。
相关文章
- 【python】面向对象编程
- 【python cookbook】【数据结构与算法】10.从序列中移除重复项且保持元素间顺序不变
- python使用pickle,marshal进行序列化、反序列及JSON的使用
- 【python cookbook】【数据结构与算法】16.筛选序列中的元素
- 【python cookbook】【数据结构与算法】12.找出序列中出现次数最多的元素
- 【python cookbook】【数据结构与算法】1将序列分解为单独的变量
- Python序列类型详解
- Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)
- 蓝桥杯官网 试题 PREV-255 历届真题 蓝肽子序列【第十一届】【决赛】【研究生组】【C++】【Java】【Python】三种解法
- Python自动生成手绘、证件照、九宫格...太炫酷了(附零基础学习资料)
- Python实现酷炫的动态交互式数据可视化,附代码
- 用于时间序列预测的频率增强信道注意力机制(Python代码实现)
- 如何使用python创建股票的时间序列可视化分析?
- 来看看Python炫酷的颜色输出与进度条打印
- python父类调用子类了解一下
- python 展开嵌套的序列
- python 同时迭代多个序列
- python高阶函数,map,filter,reduce,ord,以及lambda表达式
- python 找出序列中出现次数最多的元素方法
- python 数据结构 元组、列表、字典、序列
- python数据分析之饼状图
- Python少儿编程入门篇(6)序列基础、成员和身份运算
- 第7讲:Python中整数序列Range函数的概念以及使用
- 学习Python(五):序列