时间:2021-05-22
本篇文章给大家带来的内容是关于Python如何筛选序列中的元素 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、需求
序列中含有一些数据,我们需要提取其中的值或根据某些标准对序列做删减,
2、解决方案
要筛选序列中的数据,通常最简单的方法是使用列表推导式。
例如:
结果:
[1, 4, 10, 2, 3]
[-5, -7, -1]
使用列表推导式的一个潜在缺点是如果原始输入非常大的话,这么做可能会产生一个庞大的结果。如果这是你需要考虑的问题,那么可以使用生成器表达式通过迭代的方法产生筛选结果,例如:
结果:
1
4
10
2
3
有时候筛选的标准没法简单地表示在列表推导式或生成器表达式中。比如:假设筛选过程涉及异常处理或者其他一些复杂的细节。基于从,可以将处理筛选逻辑的代码放到单独的函数中,然后使用内建的filter()函数处理,示例如下:
结果:
['1', '2', '-3', '4', '5']
filter()创建了一个迭代器,因此如果我们想要的是列表形式的结果,请确保加上了list(),就像示例中那样。
3、分析
列表推导式和生成器表达式通常是用来筛选数据的最简单和最直接的方式。此外,它们也具有同时对数据做转换的能力。例如:
结果:
[1.0, 2.0, 3.1622776601683795, 1.4142135623730951, 1.7320508075688772]
关于筛选数据,有一种情况是用新值替换掉不满足标准的值,而不是抛弃它们。例如。除了要找到正整数之外,我们也希望在指定范围内将不满足要求的值替换掉。通常,这可以通过将筛选条件迁移到一个条件表达式中来轻松实现,就像下面这样:
结果:
[1, 4, 0, 10, 0, 2, 3, 0]
[0, 0, -5, 0, -7, 0, 0, -1]
另一个值得一提的筛选工具是itertools.compress(),它接受一个可迭代对象以及一个布尔选择器序列作为输入。输出时,它会给出所有在相应的布尔选择器中为True的可迭代对象元素。如果想把对一个序列的筛选结果施加到另一个相关的序列上时,这就会非常有用。
例如:
结果:
[False, False, True, False, False, True]
['5800 E CLARK3', '1060 W CLARK6']
这里的关键在于首先创建一个布尔序列,用来表示哪个元素可满足我们的条件,然后compress()函数挑选出满足布尔值为True的相应元素。
同filter()函数一样,正常情况下,compress()会返回一个迭代器。因此,如果需要的话,得使用list()将结果转为列表。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python实现获取序列中最小的几个元素。分享给大家供大家参考。具体方法如下:importheapqimportrandomdefissorted
最长公共子序列python实现,最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。1.找出最优解的性质,并刻划其结构特征序列a共有m个元素,序列
python中zip函数返回一个以元组为元素的列表,其中第i个元组包含每个参数序列的第i个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,
如果用到数据筛选功能,可以使用xifconditionelsey的逻辑实现。如果使用的是纯Python,可以使用不断迭代的方式对每一组元素组合进行相应的判断筛选
本文实例讲述了Python中str.join()简单用法。分享给大家供大家参考,具体如下:Pythonjoin()方法用于将序列中的元素以指定的字符连接生成一个