美文网首页
过滤序列元素

过滤序列元素

作者: 逗比的一生 | 来源:发表于2019-10-22 16:05 被阅读0次

问题:
你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列。

你可以选择列表推导。但是如果过滤规则很复杂,不妨先将过滤条件放到一个函数中,然后使用filter() 函数。

一个值得关注的过滤工具就是 itertools.compress() ,它以一个 iterable 对象和一个相 对应的Boolean选择器序列作为输入参数。然后输出 iterable 对象中对应选择器为True的元素。当你 需要用另外一个相关联的序列来过滤某个序列的时候,这个函数是非常有用的。比如,假如现在你有下面 两列数据:

>>> addresses = [ '5412 N CLARK', '5148 N CLARK', '5800 E 58TH', '2122 N CLARK' '5645 N RAVENSWOOD', '1060 W ADDISON', '4801 N BROADWAY', '1039 W GRANVILLE', ]
>>> counts = [ 0, 3, 10, 4, 1, 7, 6, 1]

你要将那些对应count值大于5的地址全部输出,那么你可以这样做:

>>> from itertools import compress
>>> more5 = [n > 5 for n in counts]
>>> more5
[False, False, True, False, False, True, True, False]
>>> list(compress(addresses,more5))
['5800 E 58TH', '4801 N BROADWAY', '1039 W GRANVILLE']

这里的关键点在于先创建一个Boolean序列,指示哪些元素复合条件。然后 compress() 函数根据这个 序列去选择输出对应位置为True的元素。

和 filter() 函数类似, compress() 也是返回的一个迭代器。因此,如果你需要得到一个列表,那 么你需要使用 list() 来将结果转换为列表类型。

>>> type(compress(addresses,more5))
<class 'itertools.compress'>
>>> compress(addresses,more5)
<itertools.compress object at 0x000001923ED95780>

相关文章

  • 2 计数,元素过滤

    1、计数 collections.Counter 类用来计算序列中的某元素的数目。 2、过滤元素 最简单的过滤序列...

  • 过滤序列元素

    问题:你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列。 你可以选择列表推导。但是如果过滤规则很复...

  • 过滤序列元素

    问题 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 解决方案 最简单的过滤序列元素的方法就是使...

  • 利用filter()和lambda表达式求100内3的倍数

    filter()过滤器 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的...

  • Python 过滤序列元素

    过滤序列元素 问题 有个原数据序列,想利用一些规则缩短序列或者提取需要的值? 解决办法 使用列表推导式是最简单的过...

  • filter和map和reduce使用

    filter: 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。...

  • map,filter,max,min四个key的内置函数的简单理

    一、filter filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。接收...

  • Python 常用高阶函数

    filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述...

  • Python内置的filter()函数和Pandas中的Data

    1.Python filter() 函数 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代...

  • filter

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个...

网友评论

      本文标题:过滤序列元素

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