广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3的生成器和迭代器代码怎么写
  • 217
分享到

Python3的生成器和迭代器代码怎么写

2023-06-28 23:06:59 217人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python3的生成器和迭代器代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python3的生成器和迭代器代码怎么写”吧!1.生成器# 一边循环一边计算的机

本篇内容主要讲解“python3的生成器和迭代器代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习python3的生成器和迭代器代码怎么写”吧!

1.生成器

# 一边循环一边计算的机制,称为生成器:generator;# 创建generator方法:# 1.把一个列表生成式的[]改成()numsList = [num * num for num in range(10)]print("列表生成式生成numsList:",numsList)numsGenerator = (num * num for num in range(10))print("生成器生成numsGenerator:",numsGenerator)# 使用next()函数获得generator的下一个返回值print("打印numsGenerator第一个元素:",next(numsGenerator))print("打印numsGenerator第二个元素:",next(numsGenerator))print("--------------------------------------------------------")# 使用for循环打印generator元素print("使用循环打印生成器中的元素!")for num in numsGenerator:    print(num,end = " ")print("\n")print("--------------------------------------------------------")# 斐波拉契数列(Fibonacci):除第一个和第二个数外,任意一个数均可由前两个数相加得到# 1,1,2,3,5,8,13,21,34def fibonacci(num):    n, a, b = 0, 0, 1    while n < num:        print(b,end = "  ")        a, b = b, a + b        n = n + 1    return "Done"print("Fibonacci前10项为:")fibonacci(10)print("\n")print("--------------------------------------------------------")# 2.把fibonacci()函数变成generator函数def fibonacci(num):    n, a, b = 0, 0, 1    while n < num:        yield b        a, b = b, a + b        n = n + 1    return "Done"# Tips:# 1.如果一个函数定义中包含yield关键字,则这个函数是一个generator函数;# 2.调用一个generator函数将返回一个generator;fib = fibonacci(10)print("fib的值:",fib)

# 结果输出:
列表生成式生成numsList: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器生成numsGenerator: <generator object <genexpr> at 0x0000028F0E6ACB88>
打印numsGenerator第一个元素: 0
打印numsGenerator第二个元素: 1
--------------------------------------------------------
使用循环打印生成器中的元素!
4 9 16 25 36 49 64 81 

--------------------------------------------------------
Fibonacci前10项为:
1  1  2  3  5  8  13  21  34  55  

--------------------------------------------------------
fib的值: <generator object fibonacci at 0x0000028F0E7839A8>
 

# 普通函数和generator函数的执行流程:# 1.普通函数:顺序执行,遇到return语句或最后一行函数语句就返回;# 2.generator函数:在每次调用next()的时候执行,遇到yield语句返回;# 3.再次执行时从上次返回的yield语句处继续执行;# 实例:定义一个generator函数,依次返回"Willard",18,"Engineer"def willardInfo():    print("STEP1")    yield "Willard"    print("--------")    print("STEP2")    yield 18    print("--------")    print("STEP3")    yield "Engineer"# 调用willardInfo()这个generator函数,先生成一个generator对象# 然后用next()函数不断获得下一个返回值,即可用循环直接打印willardInfoObject = willardInfo()for willard in willardInfoObject:    print(willard)

# 结果输出:
STEP1
Willard
--------
STEP2
18
--------
STEP3
Engineer
 

2.迭代器

# 可直接用于for循环的数据类型:# 1.list、tuple、dict、set、str等;# 2.generator,包括:生成器和带yield的generator function;# 3.可以直接作用于for循环的对象称为可迭代对象:Iterable;# 4.使用isinstance()判断一个对象是否为Iterable对象;from collections.abc import Iterableprint("判断list是否为可迭代对象!",isinstance([],Iterable))print("判断dict是否为可迭代对象!",isinstance({},Iterable))print("判断str是否为可迭代对象!",isinstance("Willard",Iterable))print("判断生成式是否为可迭代对象!",isinstance((num for num in range(10)),Iterable))print("判断number是否为可迭代对象!",isinstance(99,Iterable))

# 结果输出:
判断list是否为可迭代对象! True
判断dict是否为可迭代对象! True
判断str是否为可迭代对象! True
判断生成式是否为可迭代对象! True
判断number是否为可迭代对象! False
 

# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator# 使用isinstance()判断一个对象是否为Iterator对象;from collections.abc import Iteratorprint("判断生成器是否为迭代器!",isinstance((num for num in range(10)),Iterator))print("判断list是否为迭代器!",isinstance([],Iterator))print("判断dict是否为迭代器!",isinstance({},Iterator))print("判断str是否为迭代器!",isinstance("Willard",Iterator))print("----------------------------------------------------------")# Tips:# 1.生成器都是Iterator对象,但list、dict、str是Iterable但不是Iterator;# 2.Iterator对象表示数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,# 直到没有数据时抛出StopIteration错误;这个数据流可以看作一个有序序列,# 但不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,# Iterator的计算是惰性的,只有在需要返回下一个数据时才计算;# 3.使用iter()函数把list、dict、str变成Iterator;print("使用iter()函数把list、dict、str变成Iterator.")print("判断list是否为迭代器!",isinstance(iter([]),Iterator))print("判断dict是否为迭代器!",isinstance(iter({}),Iterator))print("判断str是否为迭代器!",isinstance(iter("Willard"),Iterator))

# 结果输出:
判断生成器是否为迭代器! True
判断list是否为迭代器! False
判断dict是否为迭代器! False
判断str是否为迭代器! False
----------------------------------------------------------
使用iter()函数把list、dict、str变成Iterator.
判断list是否为迭代器! True
判断dict是否为迭代器! True
判断str是否为迭代器! True

到此,相信大家对“Python3的生成器和迭代器代码怎么写”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python3的生成器和迭代器代码怎么写

本文链接: https://www.lsjlt.com/news/321400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3的生成器和迭代器代码怎么写
    本篇内容主要讲解“Python3的生成器和迭代器代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python3的生成器和迭代器代码怎么写”吧!1.生成器# 一边循环一边计算的机...
    99+
    2023-06-28
  • python3迭代器和生成器
    迭代对象:在我看来就是可以用for循环依次取值的一个序列就叫可迭代对象迭代器:就是可以用next()来进行取值的对象生成器:我的理解就是在迭代器的基础上给了与暂停功能的函数生成器其实就是一种特殊的迭代器。它使一种更为高级、更为优雅的迭代器。...
    99+
    2023-01-31
    生成器 迭代
  • python3--迭代器,生成器
    一 迭代器1 什么是可迭代对象?字符串,列表,元组,字典,集合都可以被for循环,说明他们都是可迭代的怎么来证明这一点呢?注释:type只能判断是什么类型isintance判断方面更广,不仅能判断类型,还能判断是否可迭代Iterable是否...
    99+
    2023-01-30
    生成器 迭代
  • Python3 迭代器与生成器
    Edit笔记内容:Python3 迭代器与生成器 笔记日期:2017-10-28迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元...
    99+
    2023-01-31
    生成器 迭代
  • Python3 迭代器,生成器,装饰器
    1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type(b)) while True: t...
    99+
    2023-01-30
    生成器 迭代
  • python3 迭代器、生成器、装饰器、
    本节内容迭代器&生成器装饰器Json & pickle 数据序列化软件目录结构规范作业:ATM项目开发 1.列表生成式迭代器&生成器列表生成式孩子我现在有个需求看列表[0, 1, 2, 3, 4, 5, 6, 7, ...
    99+
    2023-01-31
    生成器 迭代
  • python3.7 迭代器和生成器
    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 迭代器和生成器 #迭代器协议: ''' 1、迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的...
    99+
    2023-01-30
    生成器 迭代
  • python迭代器和生成器
    1.经典迭代器 import re RE_WORD = re.compile('\w+') class Sentence: def __init__(self, text): self.text = te...
    99+
    2023-01-30
    生成器 迭代 python
  • python迭代器和生成器怎么实现
    本篇内容介绍了“python迭代器和生成器怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!迭代器和生成器是python中非常强大的功能...
    99+
    2023-06-27
  • python中的迭代器和生成器怎么用
    这篇“python中的迭代器和生成器怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中的迭代器和生成器怎么用...
    99+
    2023-06-29
  • 列表生成式,迭代器和生成器
    一、列表生成式 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],现在要求把列表里的每个值加1,你怎么实现?你可能会想到的几种方法: 方法1: a = [0, 1, 2, 3, 4, 5, 6, 7, 8...
    99+
    2023-01-31
    生成器 迭代 列表
  • 8 python的迭代器和生成器
    概述         在上一节,我们介绍了Python的模块和包,包括:什么是模块、导入模块、自定义模块、__name__、什么是包、创建包、导入包等内容。在这一节中,我们将介绍Python的迭代器和生成器。在Python中,迭代器是一个非...
    99+
    2023-09-01
    python 迭代器 生成器
  • JavaScript中的迭代器和可迭代对象与生成器
    目录1. 什么是迭代器?1.1 迭代器的基本实现1.2 迭代器的封装实现2. 什么是可迭代对象2.1 原生可迭代对象(JS内置)2.1.1 部分for of 演示2.1.2 查看内置...
    99+
    2022-11-13
  • Python生成器与迭代器怎么用
    这篇文章给大家分享的是有关Python生成器与迭代器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、生成器现在可以通过生成器来直接创建一个列表,但是由于内存的限制,列表的容量肯定是有限的,如果我们需要一个...
    99+
    2023-06-25
  • 怎样理解Python迭代对象和迭代器以及生成器
    这篇文章将为大家详细讲解有关怎样理解Python迭代对象和迭代器以及生成器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在了解Python的数据结构时,容器(container)、可迭代对象...
    99+
    2023-06-17
  • 第13天-迭代器和生成器
    迭代器 迭代就是重复的一个过程,但是不是单纯的重复,每一次的重复都是基于上一次的结果产生的。不过只记住迭代他就是重复的执行过程就是了。 #单纯的重复不是迭代,例如: count = 0 while count < 3: p...
    99+
    2023-01-30
    生成器 迭代
  • 详解Python之可迭代对象,迭代器和生成器
    目录一、概念描述二、序列的可迭代性三、经典的迭代器模式四、生成器也是迭代器五、实现惰性迭代器六、使用生成器表达式简化惰性迭代器总结 一、概念描述 可迭代对象就是可以迭代的对象,我们可...
    99+
    2022-11-12
  • 生成器、迭代器的区别?
    迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string、list、dict、tuple 等这类容器对象,使用 for 循环遍历是很方便的。在后台 for 语句对容器对象调用 it...
    99+
    2023-01-30
    生成器 区别 迭代
  • 详解ES6 中的迭代器和生成器
    目录1.迭代器2.生成器1.迭代器 Iterator是 ES6 引入的一种新的遍历机制。两个核心 迭代器是一个统一的接口,它的作用是使各种数据结构可以被便捷的访问,它是通过一个键为S...
    99+
    2022-11-13
    ES6 中的迭代器和生成器 ES6 迭代器 ES6生成器
  • Python学习之迭代器和生成器
    迭代器 在Python如果一个对象可被循环(遍历)该对象中每一个元素的过程叫做迭代。例如 ,字典、字符串、列表、元祖、集合等。他们可被迭代的原因是,都有一个共同的内置函数__iter__。通过执行内置对象的__next__函数,可以依次打...
    99+
    2023-01-30
    生成器 迭代 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作