美文网首页
Python 学习笔记:筛选序列中的元素

Python 学习笔记:筛选序列中的元素

作者: 潼潼夏 | 来源:发表于2020-02-14 23:50 被阅读0次

问题:序列中有一些数据,需要提出某些值,或者删除某些值

解决方案1:列表推导式(list comprehension)

示例1:


>>>mylist = [3,6,-1,2,-3]

>>>[n for n in mylist if n>0]

[3,6,3]

>>>[n for n in mylist if n<0]

[-1,-3]

列表推导式存在问题:如果原始输入很大,可能会产生庞大的结果

解决方案:使用生成器表达式通过迭代的方法筛选结果

示例2:

>>>pos = [n for n in mylist if n>0]

>>>pos

<generator object <genexpr> at ......

>>>for x in pos:

 ...    print (x)

...

3

6

3

问题:有时候筛选的标准没法简单地表示在列表推导式或者生成器表达式中。

解决:将处理筛选逻辑的代码放到单独的函数中,然后使用内建的filter()函数处理

示例3:

values = ['1','2','-','4','N/A','no']

def is_int(val):

try:

x = int(val)

return True

except ValueError:

return False

ivals = list(filter(is_int,values))

print(ivals)

运行结果:

image

列表推导式和生成器表达式通常是用来筛选数据的最简单和最直接的方式,同时具有数据转换的能力。

示例4:

import math

mylist = [1,-1,2,-3,6]

print ([math.sqrt(n) for n in mylist if n>0])
image

列表推导式还可以使用新值替换列表中不满足的值。

示例5:将mylist中小于0的数使用0替换

mylist = [1,-1,2,-3,6]

print ([n if n >0 else 0 for n in mylist])
image

解决方案2:筛选工具itertools.compress()

输入:可迭代对象以及布尔选择器作

输出:所有布尔选择器中True的可迭代对象

作用:对一个序列的筛选结果施加到另一个相关序列施,非常有用

示例6:构建一个地址表,其中count值要大于5

address=['HuNan','FuJian','GuangXi','XiZang', 'HeBei', 'HeNan']

counts=[1,9,6,3,11,4]

more5 = [n>5 for n in counts]

print(more5)

print (list(compress(address, more5)))
image

示例6的关键在于首先建立一个布尔序列,然后compress()函数挑选出布尔值为True的相应元素。

compress()返回一个迭代器,使用list()将结果转为列表。

相关文章

  • Python 学习笔记:筛选序列中的元素

    问题:序列中有一些数据,需要提出某些值,或者删除某些值 解决方案1:列表推导式(list comprehensio...

  • Python学习路线实用技法:筛选序列中的元素

    Python学习路线实用技法:筛选序列中的元素 序列中含有一些数据,我们需要提取其中的值或根据某些标准对序列做删减...

  • 2019实战第二期-字典与列表读书打卡

    -----学习《Python基础教程第3版》读书笔记----- 学习脑图 序列 在Python中,最基本的数据结构...

  • python - Lists

    2018-05-07 python - Lists Python中最基本的数据结构是序列。序列中的每个元素都被分配...

  • 8、Python 序列

    一、概要 在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的...

  • python--集合与字典

    在前面的学习中,我们知道序列是有序的,当中的元素是可以重复的,其实,在python中还有两个序列是无序的,我们叫他...

  • Python知识

    在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称...

  • WIKI | 记一次Python 序列切片操作

    Python 摘:在Python中,序列类型包括字符串、元组、列表。序列就是元素有序排列。通过下标访问,Pytho...

  • 3-序列、列表、元组

    序列 序列就是一堆数据元素的集合,并对每个元素进行编号。在Python中,字符串、列表、元组都属于序列,他们都具有...

  • Lesson 015 —— python 列表

    Lesson 015 —— python 列表 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数...

网友评论

      本文标题:Python 学习笔记:筛选序列中的元素

      本文链接:https://www.haomeiwen.com/subject/otbsfhtx.html