Python 过滤序列元素
2023-09-27 14:25:29 时间
一、问题
过滤序列元素
二、解决方案
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']
相关文章
- why does abs() function works for the position coordinate in Python?
- python pandas 时间序列数据
- python投票统计程序,统计序列中各个数值的份数,字典的应用。
- 【华为OD机试真题 python】乱序整数序列两数之和绝对值最小 【2022 Q4 | 100分】
- Google Earth Engine——使用 Leaflet 和 Folium 在 Python 中制作交互式地图
- 105 python高级 - 集合set
- python在不同层级目录import模块的方法
- python 测试时一个str是不是字符串
- Python文件和数据格式化
- Python不兼容问题
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
- 深入理解Python生成器和yield
- python数据类型:序列(字符串,元组,列表,字典)
- 10、举例让抽象具体化——栈的压入、弹出序列(python版)
- 华为OD机试 -乱序整数序列两数之和绝对值最小(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 零基础学python-3.3 标识符
- 小学生python游戏编程arcade----excel调用
- Python-docx库的使用