itertools内置模块的过滤妙用

简介: itertools内置模块的过滤妙用

itertools内置模块的妙用
过滤源迭代器中的元素
Python内置itertools模块里有一些函数可以过滤源迭代器中的元素。

islice

islice可以在不拷贝数据的前提下,按照下标切割源迭代器。可以只给出切割的终点,也可以同时给出起点和终点,还可以指定步进值。这种切割方式与标准的序列切片及步进机制类似。

import itertools

values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

first_five = itertools.islice(values, 5)
print('First Five:', list(first_five))

middle_odds = itertools.islice(values, 2, 8, 2)
print('Middle Odds:', list(middle_odds))

>>>
First Five: [1, 2, 3, 4, 5]
Middle Odds: [3, 5, 7]

takewhile

takewhile会一直从源迭代器里获取元素,直到某元素让测试函数返回False为止。

import itertools

values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

less_than_seven = lambda x: x // 7 == 0
it = itertools.takewhile(less_than_seven, values)
print(list(it))

>>>
[1, 2, 3, 4, 5, 6]

dropwhile

与takewhile相反,dropwhile会一直跳过源序列里的元素,直到某元素让测试函数返回True为止,然后它会从这个地方开始逐个取值。

import itertools

values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

less_than_seven = lambda x: x // 7 == 0
it = itertools.dropwhile(less_than_seven, values)
print(list(it))

>
[7, 8, 9, 10]

filterfalse

filterfalse和内置的filter函数相反,它会逐个输出源迭代器里使得测试函数返回False的那些元素。

import itertools

values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

evens = lambda n: n % 2 == 0

filter_result = filter(evens, values)
print('Filter:      ', list(filter_result))

filter_false_result = itertools.filterfalse(evens, values)
print('Filter false:    ', list(filter_false_result))

>>>
Filter:       [2, 4, 6, 8, 10]
Filter false:     [1, 3, 5, 7, 9]
相关文章
|
2月前
|
数据采集 前端开发 数据处理
Scrapy的Lambda函数用法:简化数据提取与处理的技巧
在现代爬虫开发中,**Scrapy** 是一个广泛使用的高效 Python 框架,适用于大规模数据爬取。本文探讨如何利用 Python 的 **Lambda 函数** 简化 Scrapy 中的数据提取与处理,特别是在微博数据爬取中的应用。通过结合 **代理IP**、**Cookie** 和 **User-Agent** 设置,展示了实际用法,包括代码示例和优化技巧,以提高爬虫的稳定性和效率。使用 Lambda 函数能显著减少代码冗余,提升可读性,有效应对复杂的数据清洗任务。
|
5月前
|
开发者 Python
Python函数与模块使用方法
【7月更文挑战第24天】Python 是一种功能强大的编程语言,拥有丰富的函数和模块,使得开发者能够轻松地构建复杂的应用程序。本文将介绍 Python 中函数和模块的基本使用方法,并提供一些代码实例。
51 3
|
7月前
|
存储 前端开发 开发者
sass遍历,条件判断的用法(还是写下来方便找啊!)
sass遍历,条件判断的用法(还是写下来方便找啊!)
|
7月前
|
Python
python函数用法(五)
python函数用法(五)
69 1
|
7月前
|
Python
python函数用法(四)
python函数用法(四)
54 0
|
7月前
|
Serverless 开发者 Python
python函数用法(一)
python函数用法(一)
47 0
|
7月前
|
Python
python函数用法(二)
python函数用法(二)
35 0
|
7月前
|
自然语言处理 Python
python函数用法(三)
python函数用法(三)
45 0
|
XML Unix 开发工具
【Python标准库】Python标准库索引
【Python标准库】Python标准库索引
|
Python
Python 星号的妙用 —— 灵活的序列解包
Python 星号的妙用 —— 灵活的序列解包
323 0