Python怎么筛选序列中的元素

  介绍

小编给大家分享一下Python怎么筛选序列中的元素,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强> 1,需求

序列中含有一些数据,我们需要提取其中的值或根据某些标准对序列做删减,

<强> 2,解决方案

要筛选序列中的数据,通常最简单的方法是使用列表推导式。

例如:

myList=(1、4、5、10、7、2、3、1]   打印([n  for  n 拷贝myList  if  n> 0])   打印([n  for  n 拷贝myList  if  n<0])

结果:

(1、4、10 2 3]
(5、7、1]

使用列表推导式的一个潜在缺点是如果原始输入非常大的话,这么做可能会产生一个庞大的结果。如果这是你需要考虑的问题,那么可以使用生成器表达式通过迭代的方法产生筛选结果,例如:

myList=(1、4、5、10、7、2、3、1]   pos=(n  for  n 拷贝myList  if  n 在0)   for  x  pos拷贝:   打印才能(x)

结果:
1
4
10
2
3

有时候筛选的标准没法简单地表示在列表推导式或生成器表达式中,比如:假设筛选过程涉及异常处理或者其他一些复杂的细节。基于从,可以将处理筛选逻辑的代码放到单独的函数中,然后使用内建的过滤器()函数处理,示例如下:

值=[& # 39;1 & # 39;& # 39;2 & # 39;,& # 39;3 & # 39;,& # 39;& # 39;,& # 39;4 & # 39;,& # 39;N/一个# 39;,& # 39;5 & # 39;】   def  is_int (val):   尝试才能:   ,,,x=int (val)   ,,,return 真实的   except 才能;ValueError:   ,,,return 错误的   ,   ivals=列表(过滤器(is_int、价值观))   打印(ivals)

结果:
[& # 39; 1 & # 39; & # 39; 2 & # 39;, & # 39; 3 & # 39;, & # 39; 4 & # 39;, & # 39; 5 & # 39;]

过滤器()创建了一个迭代器,因此如果我们想要的是列表形式的结果,请确保加上了名单(),就像示例中那样。

<强> 3分析

列表推导式和生成器表达式通常是用来筛选数据的最简单和最直接的方式。此外,它们也具有同时对数据做转换的能力,例如:

import 数学   myList=(1、4、5、10、7、2、3、1]   打印([math.sqrt (n), for  n 拷贝myList  if  n> 0])

结果:
(1.0, 2.0, 3.1622776601683795, 1.4142135623730951, 1.7320508075688772)

关于筛选数据,有一种情况是用新值替换掉不满足标准的值,而不是抛弃它们。例如。除了要找到正整数之外,我们也希望在指定范围内将不满足要求的值替换掉。通常,这可以通过将筛选条件迁移到一个条件表达式中来轻松实现,就像下面这样:

myList=(1、4、5、10、7、2、3、1]   打印([n  if  n> 0, else  0, for  n 拷贝myList])   打印([n  if  n<0, else  0, for  n 拷贝myList])

结果:
(1, 4, 0, 10 0 2 3 0]
[0 0 5 0 7 0, 0, 1]

另一个值得一提的筛选工具是itertools.compress(),它接受一个可迭代对象以及一个布尔选择器序列作为输入。输出时,它会给出所有在相应的布尔选择器中为真正的可迭代对象元素。如果想把对一个序列的筛选结果施加到另一个相关的序列上时,这就会非常有用。

例如:

得到itertools  import 压缩   地址=[   & # 39;5412,N  CLARK1& # 39;   & # 39;5148,N  CLARK2& # 39;   & # 39;5800,E  CLARK3& # 39;   & # 39;2122,N  CLARK4& # 39;   & # 39;5645,M  CLARK5& # 39;   & # 39;1060,W  CLARK6& # 39;   ]   数量=[0、3、10、4、1、7]   #构建一个列的表,它相应的计算值要大于5   more5=[n> 5, for  n 拷贝数)   打印(more5)   ,   print(列表(压缩(地址、more5)))

结果:
(假的,假的,真的,假的,假的,真正的]
[& # 39; 5800 E CLARK3& # 39;, & # 39; 1060 W CLARK6& # 39;]

这里的关键在于首先创建一个布尔序列,用来表示哪个元素可满足我们的条件,然后压缩()函数挑选出满足布尔值为True的相应元素。

同过滤()函数一样,正常情况下,压缩()会返回一个迭代器。因此,如果需要的话,得使用列表()将结果转为列表。

看完了这篇文章,相信你对“Python怎么筛选序列中的元素”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

Python怎么筛选序列中的元素