首页 > 编程语言 >Python 教程之控制流(11)无限迭代器

Python 教程之控制流(11)无限迭代器

时间:2022-10-04 16:04:57浏览次数:59  
标签:11 迭代 Python 控制流 无限 itertools time print

Python的Itetool是一个模块,它提供了各种函数,这些函数在迭代器上工作以产生复杂的迭代器。该模块作为一个快速,内存效率的工具,可以单独使用或组合使用以形成迭代器代数
例如,假设有两个列表,并且您想要将它们的元素相乘。有几种方法可以实现这一目标。可以使用朴素的方法,即同时迭代列表的元素并将它们相乘。另一种方法是使用 map 函数,即通过将 mul 运算符作为第一个参数传递给 map 函数,并将 List 作为该函数的第二个和第三个参数传递。让我们看看每种方法所花费的时间。

# 演示迭代器模块的Python程序


import operator
import time

# 定义列表
L1 = [1, 2, 3]
L2 = [2, 3, 4]

# 映射函数之前的开始时间
t1 = time.time()

# 计算结果
a, b, c = map(operator.mul, L1, L2)

# 映射函数后的结束时间
t2 = time.time()

# 映射函数花费的时间
print("Result:", a, b, c)
print("Time taken by map function: %.6f" %(t2 - t1))

# 初始方法之前的开始时间
t1 = time.time()

# 使用for循环计算结果
print("Result:", end = " ")
for i in range(3):
print(L1[i] * L2[i], end = " ")

# 朴素方法后的结束时间
t2 = time.time()
print("\nTime taken by for loop: %.6f"

输出:

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12
Time taken by for loop: 0.000014

在上面的示例中,可以看出 map 函数所花费的时间大约是 for 循环所用时间的一半。这表明迭代工具是快速、内存高效的工具。

此模块提供的不同类型的迭代器包括:

  • 无限迭代器
  • 组合迭代器
  • 终止迭代器

无限迭代器

Python 中的迭代器是可以与“for in 循环”一起使用的任何 Python 类型。Python 列表、元组、字典和集合都是内置迭代器的示例。但是迭代器对象不必穷尽,有时它可以是无限的。这种类型的迭代器称为无限迭代器

Python 提供了三种类型的无限迭代器:

  • 计数(开始,步骤):此迭代器从“开始”数字开始打印并无限打印。如果提到步骤,则跳过数字,否则默认情况下步骤为1。请参阅下面的示例,了解它与 for in 循环的用法。
    例:
# 演示无限迭代器的Python程序

import itertools

# for 循环
for i in itertools.count(5, 5):
if i == 35:
break
else:
print(i, end =" ")

输出:

5 10 15 20 25 30
  • 循环(可迭代):此迭代器按传递的容器中的顺序打印所有值。当所有元素都以循环方式打印时,它将再次从头开始重新开始打印
    示例 1:
# 演示无限迭代器的Python程序

import itertools

count = 0

# for 循环
for i in itertools.cycle('AB'):
if count > 7:
break
else:
print(i, end = " ")
count += 1

输出:

A B A B A B A B

示例 2: 使用下一个函数。

# 演示无限迭代器的Python程序

import itertools

l = ['Geeks', 'for', 'Geeks']

# 定义迭代器
iterators = itertools.cycle(l)

# for 循环
for i in range(6):

# Using next function
print(next(iterators), end = " ")

组合迭代器
输出:

Geeks for Geeks Geeks for Geeks
  • 重复(值、数):此迭代器重复打印传递的值无限次。如果提到可选关键字 num,则它会重复打印 num 次数。
    例:
# 演示 repeat() 工作的Python代码

# 为迭代器操作导入“itertools”
import itertools

# 使用 repeat() 重复打印数字
print ("Printing the numbers repeatedly : ")
print (list(itertools.repeat(25, 4)))

输出:

Printing the numbers repeatedly :
[25, 25, 25, 25]

标签:11,迭代,Python,控制流,无限,itertools,time,print
From: https://blog.51cto.com/haiyongblog/5731292

相关文章

  • Python 教程之控制流(7)Python中的链接比较运算符
    检查两个以上的条件在编程语言中很常见。假设我们要检查以下条件:a<b<c最常见的语法如下:ifa<band在Python中,有一种更好的方法可以使用比较运算符Chaining来编写它......
  • Python 教程之运算符(14)Python中==和is运算符的区别
    相等运算符(==)是Python中的比较运算符,用于比较两个操作数的值并检查值是否相等。而“ is”运算符是标识运算符,用于检查两个操作数是否引用同一个对象(存在于同一个内......
  • Python 教程之控制流(6)打印金字塔图案的程序
    可以使用简单的for循环在python中打印模式。第一个外循环用于处理行数,而内嵌套循环用于处理列数。操作打印语句,可以打印不同的数字图案、字母图案或星形图案。 本文展......
  • Python 教程之控制流(5)Python 中的 range() 与 xrange()
    range()和xrange()是两个函数,可用于在Python的for循环中迭代一定次数。在Python3中,没有xrange,但range函数的行为类似于Python2中的xrange。如果要编写可在......
  • Python 教程之控制流(4)Python 中的循环技术
    Python在各种顺序容器中通过某些内置函数支持各种循环技术。这些方法主要在竞争性编程中非常有用,在各种需要特定技术的项目中也非常有用,这些项目需要使用循环来维护代码的......
  • Python 教程之控制流(8)在 Python 中使用带有 For 循环的 Else 条件语句
    在python中使用带有for循环的else条件语句在大多数编程语言(C/C++、Java等)中,else语句的使用受到if条件语句的限制。但是Python也允许我们在for循环中使用else条件......
  • Python 实现Tracert追踪TTL值
    Tracert命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取......
  • Python 入门指南第三节 | Python 简介
    3.Python简介下面的例子中,输入和输出分别由大于号和句号提示符(​​>>>​​​和​​...​​)标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含......
  • VS Code 和 Python:数据科学的天作之合
    当你将排名第一的代码编辑器与排名第一的数据科学编程语言结合使用时,你会得到什么?一方面,你获得了超过6000万次安装VisualStudioCode的Python扩展。这是迄今为止VS......
  • Spring让人眼前一亮的11个小技巧
    前言我们一说到spring,可能第一个想到的是IOC(控制反转)和AOP(面向切面编程)。没错,它们是spring的基石,得益于它们的优秀设计,使得spring能够从众多优秀框架中脱颖而出。除......