Loading... <p>迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)<br />迭代器只能往前不会退后</p> <p>以下类型支持迭代</p> <ol class=" list-paddingleft-2"> <li> <p>序列类型:list,str,tuple</p> </li> <li> <p>非序列类型:dict,file</p> </li> <li> <p>自定义类</p> </li> </ol> <p>通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象</p> <pre class="brush:python;toolbar:false">l1=range(5) iter1=iter(l1) print l1 <listiterator at 0x291cc90></pre> <p>使用next()方法可以访问下一个元素:</p> <pre class="brush:python;toolbar:false">print iter1.next() 0 print iter1.next() 1 print iter1.next() 2 ... print iter1.next() --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-10-54f0920595b2> in <module>()</pre> <p>如果迭代器越界则会抛出StopIteration异常</p> <p></p> <p>列表解析:根据已有的列表,高效产生新列表的方法</p> <p>将列表中的值开方后放入另外一个列表:</p> <pre class="brush:python;toolbar:false">l1=[1,2,3,4,5] l2=[i**2 for i in l1] print l2 [1, 4, 9, 16, 25]</pre> <p>也可加入判断,将列表中的偶数开放后放入另外一个列表:</p> <pre class="brush:python;toolbar:false">l1=[1,2,3,4,5] l2=[i**2 for i in l1 if i%2 == 0] print l2 [4, 16] [expression for iter_var in iterable if cond_expr]</pre> <p></p> <p>生成器表达式</p> <p>(expression for iter_var in iterable if cond_expr)</p> <pre class="brush:python;toolbar:false">g1=(i**2 for i in range(1,5)) print g1 <generator object <genexpr> at 0x2921500></pre> <p>通过next方法获取值</p> <pre class="brush:python;toolbar:false">g1.next() 1 g1.next() 4</pre> <p>内置函数open()用于打开文件和创建文件对象 close()用于关闭</p> <p>open(name[,mode[,bufsize]])</p> <p>name表示文件名,mode表示模式,bufsize表示缓冲区参数</p> <p>mode有以下几种</p> <p>r 读;w 写;a 从文件底部追加;r+ 可读可写,不可创建不存在的文件;w+ 可读可写,可创建不存在的文件 a+ 可读可写,从底部追加,不存在则创建</p> <p>b表示以二进制模式打开文件</p> <p>bufsize</p> <p>0表示无缓冲 1表示使用缓冲 负数表示使用系统默认设置,正数表示指定大小缓冲</p> <p>file.readline()输出一行,file.readlines()输出所有</p> <pre class="brush:python;toolbar:false">f1=open('/tmp/passwd','a+') f1.readline() 'root:x:0:0:root:/root:/bin/bash\n' f1.readlines() ['bin:x:1:1:bin:/bin:/sbin/nologin\n', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n', 'adm:x:3:4:adm:/var/adm:/sbin/nologin\n', ...]</pre> <p>file.tell()获取在文件当前位置</p> <pre class="brush:python;toolbar:false">f1.tell() 1099</pre> <p>file.seek(offset[,whence])控制位置</p> <p>whence起点:0,从文件头;1,从当前位置;2,从末尾 offset偏移量</p> <pre class="brush:python;toolbar:false">f1.seek(10,0) f1.readline() ':root:/root:/bin/bash\n'</pre> <p>file.write('some words')写入文件</p> <p>file.flush()将文件内容从内存写入磁盘</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信