Python 教程之控制流(13)终止迭代器

简介: Python 教程之控制流(13)终止迭代器

终止迭代器

终止迭代器用于处理短输入序列,并根据所用方法的功能生成输出。

不同类型的终止迭代器有:

  • 累加(iter, func): 此迭代器采用两个参数,可迭代目标和在 target 中值的每次迭代中将遵循的函数。如果未传递任何函数,则默认进行加法。如果输入可迭代为空,则输出可迭代也为空。
    例:

# 演示accumlate()工作原理的Python代码
import itertools
import operator
# 正在初始化列表1
li1 = [1, 4, 5, 7]
# 使用 accumlate()打印元素的连续求和
print ("The sum after each iteration is : ", end ="")
print (list(itertools.accumulate(li1)))
print ("The product after each iteration is : ", end ="")
print (list(itertools.accumulate(li1, operator.mul)))
print ("The sum after each iteration is : ", end ="")
print (list(itertools.accumulate(li1)))
print ("The product after each iteration is : ", end ="")
print (list(itertools.accumulate(li1, operator.mul)))

输出:

The sum after each iteration is : [1, 5, 10, 17]
The product after each iteration is : [1, 4, 20, 140]
The sum after each iteration is : [1, 5, 10, 17]
The product after each iteration is : [1, 4, 20, 140]
  • 链(iter1, iter2. 此函数用于打印其参数中提到的可迭代目标中的所有值。
    例:

# 演示和 chain()的工作原理的Python代码
import itertools
# 初始化 list 1
li1 = [1, 4, 5, 7]
# 初始化 list 2
li2 = [1, 6, 5, 9]
# 初始化 list 3
li3 = [8, 10, 5, 4]
# 使用chain()打印列表的所有元素
print ("All values in mentioned chain are : ", end ="")
print (list(itertools.chain(li1, li2, li3)))

输出:

All values in mentioned chain are : [1, 4, 5, 7, 1, 6, 5, 9, 8, 10, 5, 4]
  • chain.from_iterable(): 这个函数的实现方式与 chain() 类似,但这里的参数是列表列表或任何其他可迭代容器。
    例:

# 演示 chain.from_iterable() 工作的Python代码
import itertools
# 初始化 list 1
li1 = [1, 4, 5, 7]
# 初始化 list 2
li2 = [1, 6, 5, 9]
# 初始化 list 3
li3 = [8, 10, 5, 4]
# 初始化列表的列表
li4 = [li1, li2, li3]
# using chain.from_iterable() to print all elements of lists
print ("All values in mentioned chain are : ", end ="")
print (list(itertools.chain.from_iterable(li4)))

输出:

All values in mentioned chain are : [1, 4, 5, 7, 1, 6, 5, 9, 8, 10, 5, 4]
  • 压缩(iter, 选择器): 此迭代器根据作为其他参数传递的布尔列表值,有选择地从传递的容器中选取要打印的值。将打印与布尔值 true 对应的参数,否则将跳过所有参数。
    例:

# 演示和compress() 的工作原理的Python代码
import itertools
# 使用compress() 有选择地打印数据值
print ("The compressed values in string are : ", end ="")
print (list(itertools.compress('GEEKSFORGEEKS', [1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0])))

输出:

The compressed values in string are : ['G', 'F', 'G']
  • dropwhile(func, seq): 此迭代器仅在 func 之后开始打印字符。在参数中首次返回 false。
    例:

# 演示dropwhile() 工作原理的Python代码
import itertools
# 初始化 list
li = [2, 4, 5, 7, 8]
# 使用dropwhile() 在条件为false后开始显示
print ("The values after condition returns false : ", end ="")
print (list(itertools.dropwhile(lambda x : x % 2 == 0, li)))

输出:

The values after condition returns false : [5, 7, 8]
  • filterfalse(func, seq): 顾名思义,此迭代器仅打印为传递的函数返回 false 的值。
    例:

# 演示 filterfalse() 工作的Python代码
import itertools
# 初始化 list
li = [2, 4, 5, 7, 8]
# 使用filterfalse() 打印错误值
print ("The values that return false to function are : ", end ="")
print (list(itertools.filterfalse(lambda x : x % 2 == 0, li)))

输出:

The values that return false to function are : [5, 7]
  • 是(可迭代、启动、停止、步进): 此迭代器有选择地打印作为参数传递的其可迭代容器中提到的值。此迭代器采用 4 个参数、可迭代容器、起始位置、结束位置和步骤。
    例:

# 演示islice() 工作的Python代码
import itertools
# 初始化 list
li = [2, 4, 5, 7, 8, 10, 20]
# 使用islice()根据需要对列表进行切片,从第二个索引开始打印,直到第六个,跳过2
print ("The sliced list values are : ", end ="")
print (list(itertools.islice(li, 1, 6, 2)))

输出:

The sliced list values are : [4, 7, 10]
  • 星图(功能,元组列表): 此迭代器将函数和元组列表作为参数,并根据列表的每个元组中的函数返回值。
    例:

# 演示starmap()工作的Python代码
import itertools
# 初始化元组列表
li = [ (1, 10, 5), (8, 4, 1), (5, 4, 9), (11, 10, 1) ]
# 使用starmap()作为选择值acc.to函数选择所有元组值中的min
print ("The values acc. to function are : ", end ="")
print (list(itertools.starmap(min, li)))

输出:

The values acc. to function are : [1, 1, 4, 1]
  • takewhile(func, 可迭代): 此迭代器与 dropwhile() 相反,它打印值,直到函数第一次返回 false。
    例:

# 演示takewhile() 工作原理的Python代码
import itertools
# 初始化列表
li = [2, 4, 6, 7, 8, 10, 20]
# 使用takewhile() 打印值,直到条件为false。
print ("The list values till 1st false value are : ", end ="")
print (list(itertools.takewhile(lambda x : x % 2 == 0, li )))

输出:

The list values till 1st false value are : [2, 4, 6]
  • **三通(迭代器,计数):-**此迭代器将容器拆分为参数中提到的许多迭代器。
    例:

# 演示tee() 工作的Python代码
import itertools
# 初始化 list
li = [2, 4, 6, 7, 8, 10, 20]
# 在迭代器中存储列表
iti = iter(li)
# 使用tee() 生成迭代器列表,可以生成具有相同值的3个迭代器的列表。
it = itertools.tee(iti, 3)
# 打印迭代器的值
print ("The iterators are : ")
for i in range (0, 3):
  print (list(it[i]))

输出:

The iterators are : 
[2, 4, 6, 7, 8, 10, 20]
[2, 4, 6, 7, 8, 10, 20]
[2, 4, 6, 7, 8, 10, 20]
  • zip_longest(可迭代1,可迭代2,填充): 此迭代器按顺序交替打印可迭代对象的值。如果其中一个可迭代对象已完全打印,则其余值将由分配给 fillvalue 的值填充。
    例:

# 演示zip_longest() 工作原理的Python代码
import itertools
# 使用ziplongest() 组合两个iterable。
print ("The combined values of iterables is : ")
print (*(itertools.zip_longest('GesoGes', 'ekfrek', fillvalue ='_' )))

输出:

The combined values of iterables is  : 
('G', 'e') ('e', 'k') ('s', 'f') ('o', 'r') ('G', 'e') ('e', 'k') ('s', '_')


目录
相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
352 1
|
6月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
912 19
|
5月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
241 1
|
6月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
343 2
|
7月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
296 0
|
6月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
6月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
309 0
|
7月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
448 0
|
大数据 数据处理 开发者
Python中的迭代器和生成器:不仅仅是语法糖####
本文探讨了Python中迭代器和生成器的深层价值,它们不仅简化代码、提升性能,还促进了函数式编程风格。通过具体示例,揭示了这些工具在处理大数据、惰性求值及资源管理等方面的优势。 ####
|
机器学习/深度学习 设计模式 大数据
30天拿下Python之迭代器和生成器
30天拿下Python之迭代器和生成器
129 3

推荐镜像

更多