


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程提纲:循环语句_迭代器及循环技巧
初识迭代器编写循环的技巧初探列表解析1初识迭代器
for循环可以用于Python中任何序列类型,包括列表、元组以及字符串,实际上for循环可用于任何可迭代的对象。例如:>>>forxin[1,2,3,4]:printx**2>>>forxin'spam':printx*2通过文件迭代器来了解迭代器含义:>>>f=open(“script1.py”)#打开一个文件对象>>>f.readline()#通过连续调用该方法来读取数据>>>f=open("script1.py")>>>f.next()#也可以通过next()方法来读取数据以上的一行一行读取读取方式可以改成通过循环语句来读取数据>>>forlineinopen('script1.py'):printline.upper(),或>>>f=open('script1.py')>>>whileTrue: line=f.readline() ifnotline:break printline.upper()1初识迭代器其他内置类型迭代器:列表:>>>L=[1,2,3]>>>I=iter(L)#通过函数得到一个迭代器>>>I.next()#通过调用迭代器的方法进行逐个元素获取字典:>>>D={'a':1,"b":2,'c':3}>>>forkeyinD.keys():printkey,D[key]或>>>forkeyinD:printkey,D[key]其他迭代环境:每一种由左至右扫描对象的工具都会使用迭代协议。这也包括for循环。另外还有一个内置工具或函数也采用了迭代协议,例如:列表解析:>>>uppers=[line.upper()forlineinopen('script1.py')]>>>uppersmap内置函数:>>>map(str.upper,open('script1.py'))In成员关系测试:>>>'x=2\n'inopen('script1.py')Sorted()函数:>>>sorted([3,2,4,1,5,0])Sum()函数:>>>sum([3,2,4,1,5,0])2编写循环的技巧for循环包括多数计算器式的循环。一般而言,for比while容易写,执行速度快。当需要遍历序列时,它为首选工具。但是,有些情况下,你需要更为特定的方式来进行迭代。例如需要在列表中每隔两个元素,或者在过程中修改列表等,这时可以用while循环以及手动索引运算编写编码,但是Python提供两个内置函数,在for循环内定制迭代:内置range函数返回连续整数列表,可作为form中的索引内置zop函数返回并行的元素元组的列表,可用于在for内遍历数个序列循环计数器:while和rangerange函数其实是通用的工具,可用在各种环境下。虽然range常用在for循环中来产生索引,但也可以用在任何需要整数列表的地方:>>>range(5),range(2,5),range(0,10,2)>>>range(-5,5)>>>range(5,-5,-1)>>>foriinrange(3):printi,'pythons‘>>>x='spam'>>>i=0>>>foriteminx:printitem,>>>whilei<(len(x)):printx[i],;i+=1>>>foriinrange(len(x)):printx[i],非完备遍历:range>>>s='abcdefghijk‘>>>foriinrange(0,len(s),2):prints[i],#更现实的操作方式是用分片技术>>>forxins[::2]:printx2编写循环的技巧修改列表:range可以使用range和for的组合在循环遍历列表时并对元素进行修改:>>>L=[1,2,3,4,5]>>>foriinrange(len(L)):L[i]+=1也可以使用range和while的组合在循环遍历列表时并对元素进行修改:>>>i=0>>>whilei<len(L):L[i]+=1;i+=1并行遍历:zip和map内置函数zip也让我们使用for循环来并行使用多个序列。Zip会取得一个或多个序列为参数,然后将这些序列中的并排的元素配成对,返回元组的列表。>>>L1=[1,2,3,4]>>>L2=[5,6,7,8]>>>zip(L1,L2)[(1,5),(2,6),(3,7),(4,8)]>>>for(x,y)inzip(L1,L2):printx,y,'--',x+y>>>T1,T2,T3=(1,2,3),(4,5,6),(7,8,9)>>>zip(T1,T2,T3)>>>s1='abc';s2='xyz123'>>>zip(s1,s2)>>>map(None,s1,s2)#也可以通过map函数把序列配对,并为较短的序列用None补齐2编写循环的技巧使用zip构造字典字典创建方式:>>>D1={'spam':1,'eggs':3,'toast':5}>>>D1={}>>>D1['spam']=1>>>D1['eggs']=3>>>D1['toast']=5通过zip来构造字典:>>>keys=['spam','eggs','toast']>>>vals=[1,3,5]>>>D2={}>>>for(k,v)inzip(keys,vals):D2[k]=v>>>D2{'toast':5,'eggs':3,'spam':1}Python2.2及后续版本中可以跳过for循环直接把zip过的键/值列表传给内置的dict构造函数>>>D3=dict(zip(keys,vals))2编写循环的技巧产生偏移和元素:enumerate函数序列类型函数enumerate可以返回一个生成器对象,这种对象支持迭代协议,可以将字符串进行分解,返回其偏移量及元素的元组。例如:普通循环:>>>s='spam'>>>offset=0>>>foritemins:printitem,'appersatoffset',offset;offset+=1使用enumerate函数的循环:>>>for(offset,item)inenumerate(s):printitem,'appersatoffset',offset>>>e=enumerate(s)>>>e.next()(0,'s')>>>e.next()(1,'p')>>>e.next()(2,'a')在列表解析表达式中使用enumerate函数的循环:>>>[c*ifor(i,c)inenumerate(s)]3初探列表解析列表解析基础:普通的for循环遍历列表语句:>>>L=[1,2,3,4,5]>>>foriinrange(len(L)):L[i]+=10>>>L[11,12,13,14,15]使用列表解来取代上述for循环:>>>L=[x+10forxinL]>>>L[21,22,23,24,25]列表解析的语法是从集合理论表示中的一种结构中衍生出来的,也就是对集合中的每个元素应用某一种运算,但不需要懂得集合理率就能运用。列表解析是写在方括号中的,看起来像是倒过来的for循环。从技术角度来说,列表解析不是必需要求的,事实上,上述列表解析内部做法是:>>>res=[]>>>forxinL:res.append(x+10)>>>res[31,32,33,34,35]3初探列表解析对文件使用列表解析:>>>f=open("script1.py")>>>lines=f.readlines()>>>lines['importSys\n','printSys.path\n','x=2\n','print2**33\n']>>>lines=[line.rstrip()forlineinlines]>>>lines['importSys','printSys.path','x=2','print2**33']>>>lines=[line.rstrip()forlineinopen('script1.py')]>>>lines['importSys','printSys.path','x=2','print2**33']3初探列表解析扩展列表解析语法:在列表解析表达式中可以结合一个if分句来过滤测试不为真的结果元素。>>>lines=[line.rstrip()forlineinopen('script1.py')ifline[0]=='p']>>>lines['printSys.path','print2**33']用普通的for循环的写法:>>>res=[]>>>forlineinopen('script1.py'): ifline[0]=='p': res.append(line.rstrip())
>>>res['printSys.path','print2**33']使用列表解析进行嵌套循环。>>>[x+yforxin'abc'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医护关系问卷
- 企业人力资源管理咨询合作合同
- 康复医学的治疗方案探讨
- 中医药健康养生指南
- 水电安装安全培训教材课件
- 商场安全培训课件
- 中国邮政2025济源市秋招仓储管理岗位高频笔试题库含答案
- 2025年齿圈行业研究报告及未来行业发展趋势预测
- 2025年氟制冷剂行业研究报告及未来行业发展趋势预测
- 2025年酚氧树脂行业研究报告及未来行业发展趋势预测
- 2024年西安医学院第一附属医院招聘真题
- 卡西欧 fx-991CN X 科学计算器使用说明书
- 排污许可条例培训课件
- 婴儿配方奶粉管理办法
- 政务摄影培训课件模板
- 2025年新疆中考数学试卷真题(含答案解析)
- 中央厨房体系管理制度
- GB/T 19437-2025印刷技术印刷图像的光谱测量和色度计算
- 2025至2030中国医疗服务行业产业运行态势及投资规划深度研究报告
- 宾馆内部治安管理制度
- 《鲁迅故居》课件
评论
0/150
提交评论