Python 过滤序列元素
2021/12/2 17:39:06
本文主要是介绍Python 过滤序列元素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 一、问题
- 二、解决方案
- 1. 列表推到
- 2. 生成器表达式
- 3. filter() 函数
- 三、讨论
一、问题
过滤序列元素
二、解决方案
1. 列表推到
lst = [1, 4, -5, 10, -7, 2, 3, -1] print([n for n in lst if n > 0]) # [1, 4, 10, 2, 3]
列表推到占用内存,可以用生成器表达式代替。
2. 生成器表达式
pos = (n for n in lst if n > 0) print(pos) for i in pos: print(i)
输出:
<generator object <genexpr> at 0x0000027741A098C8> 1 4 10 2 3
过滤规则比较复杂,不能简单的在列表推到或生成器表达式中表达出来,
可以将过滤代码放到一个函数中,然后使用 filter()
函数。
3. filter() 函数
lst = ['1', '2', '3', '-', '4', 'N/A', '5'] def if_int(val): for i in val: if i.isdigit(): return True else: return False result = list(filter(if_int, lst)) print(result)
输出:
['1', '2', '3', '4', '5']
三、讨论
还有一个过滤工具 itertools.compress()
。
以迭代器和布尔选择器作为输入,输出迭代对象中布尔值是 True 的元素。
name = ['wangke', 'wangyan', 'wangying', 'qinlu', 'hongxia'] age = [30, 18, 18, 28, 58]
from itertools import compress more18 = [n>18 for n in age] print(more18) print(list(compress(name, more18))) # 输出age>18的name
输出:
[True, False, False, True, True] ['wangke', 'qinlu', 'hongxia']
这篇关于Python 过滤序列元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享