序列中含有一些数据,我们需要提取其中的值或根据某些标准对序列做删减,
要筛选序列中的数据,通常最简单的方法是使用列表推导式。
例如:
<前> 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,,,,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;】 >之前filter()创建了一个迭代器,因此如果我们想要的是列表形式的结果,请确保加上了名单(),就像示例中那样。
Python学习路线实用技法:筛选序列中的元素