首页 > 编程语言 >python迭代器、生成器与可迭代对象

python迭代器、生成器与可迭代对象

时间:2024-03-09 10:14:02浏览次数:21  
标签:迭代 python 生成器 list 对象 isinstance Iterable

迭代(Iteration)

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

方法是通过collections.abc模块的Iterable类型判断,一个对象是否为可迭代对象


>>> from collections.abc import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

一种节省内存的可迭代对象生成器(generator)

如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator

生成器不能直接打印,需要next()函数获得下一个元素,直到抛出StopIteration异常
或者使用for循环进行遍历,因为generator也是可迭代的(Iterable)

yield的genator function

廖雪峰-生成器

Reference

标签:迭代,python,生成器,list,对象,isinstance,Iterable
From: https://www.cnblogs.com/guanghui-hua/p/18062292

相关文章

  • python urllib.parse urlparse path url路径分割
    前言全局说明pythonurllib.parseurlparsepathurl路径分割一、获取路径部分#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-fromurllib.parseimporturlparseurl='http://www.baidu.com/aa/bb/cc/index.html'print("url:",url)parsed......
  • Python
    内置函数str=“a,b,b,d,e,f”1.len()表示字符串长度2.find()表示检查字符串中是否包含某个子字符串,如果包含则返回字符串对应的索引值,如果不包含则返回-1语法:(substr,start,end)3.index()表示检测字符串中是否包含子字符串,如果找不到会报错。4.count()用于统计某个字符串出现的......
  • python的ansible库--ansible_runner
    介绍AnsibleRunner是ansible官方提供的一个工具和python库,当直接与Ansible进行交互或作为另一个系统的一部分与Ansible进行交互时,无论是通过容器映像接口,作为独立工具还是作为可以导入的Python模块,它都可以提供帮助。目的是为Ansible提供稳定且一致的接口抽象。参考网站[官方......
  • python 脚本中 # -*- coding: utf-8 -*-的作用
     001、[root@pc1test1]#lstest01.pytest02.py[root@pc1test1]#cattest01.py#!/usr/bin/envpython#注释内容list1=["aa","bb","cc"]print(list1)[root@pc1test1]#cattest02.py#!/usr/bin/envpython#-*-coding:utf-8......
  • python3.7.4 RV1126 交叉编译
    首先,十分感谢大佬分享的交叉编译攻略,原文链接如下:https://www.cnblogs.com/Se7eN-HOU/p/16736164.html在此基础上,本人经过一周时间的踩坑,终于在RV1126开发板上实现了交叉编译。现记录本人实际编译版本与上述版本略有不同之处。主要是由于3.5.2版本的python和openssl1.0.2g在......
  • python脚本的开头该怎么写
     001、第一句通常为a、#!/usr/bin/envpythonb、#!/usr/bin/python首先以上两脚都是指定脚本语言的解释器,均表示用python解释器执行下面的脚本。a的写法比b的写法更加的健壮。因为b把解释器写死了,如果python的可执行程序不在/usr/bin/python中,那么程序就容易出错。而a的......
  • python-memo-3
    x_1+x_2+x_3+x_4=8的正整数解(>0):从7个空隙中添加3个挡板->C(M,N),M=7,N=3m=int(input('m='))n=int(input('n='))fm=1fornuminrange(1,m+1):fm*=numfn=1fornuminrange(1,n+1):fn*=numfm_n=1fornuminrange(1,......
  • vim 编辑python文件 禁止tab转换为空格的设置
    1.修改各种路径下的.vimrc都没用2.一个解决方法:每次用vim打开python文件后,分别运行:setts=4(8):setnoexpandtab:%retab!3.其他:安装python编辑的dictionary补全提示插件:filetypepluginonletg:pydiction_location='~/.vim/tools/pydiction/compl......
  • python面试题 :进程、线程、协程的区别
    进程、线程和协程区别1.进程进程是系统资源分配的最小单位,系统由一个个进程(程序)组成一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)。文本区域存储处理器执行的代码数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动......
  • python 操作 minio
    环境安装pipinstall-Uminio示例代码importosfromminioimportMiniofromloguruimportloggerfromdatetimeimporttimedeltaclassClient:'''endpoint:ip:portaccess_key:yourusernamesecret_key:yourpasswordsecur......