Python入门之迭代,列表解析,生成器及文件操作

迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)
迭代器只能往前不会退后

以下类型支持迭代

  1. 序列类型:list,str,tuple

  2. 非序列类型:dict,file

  3. 自定义类

通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象

l1=range(5)
iter1=iter(l1)
print l1
<listiterator at 0x291cc90>

使用next()方法可以访问下一个元素:

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>()

如果迭代器越界则会抛出StopIteration异常

列表解析:根据已有的列表,高效产生新列表的方法

将列表中的值开方后放入另外一个列表:

l1=[1,2,3,4,5]
l2=[i**2 for i in l1]
print l2
[1, 4, 9, 16, 25]

也可加入判断,将列表中的偶数开放后放入另外一个列表:

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]

生成器表达式

(expression for iter_var in iterable if cond_expr)

g1=(i**2 for i in range(1,5))
print g1
<generator object <genexpr> at 0x2921500>

通过next方法获取值

g1.next()
1
g1.next()
4

内置函数open()用于打开文件和创建文件对象 close()用于关闭

open(name[,mode[,bufsize]])

name表示文件名,mode表示模式,bufsize表示缓冲区参数

mode有以下几种

r 读;w 写;a 从文件底部追加;r+ 可读可写,不可创建不存在的文件;w+ 可读可写,可创建不存在的文件 a+ 可读可写,从底部追加,不存在则创建

b表示以二进制模式打开文件

bufsize

0表示无缓冲 1表示使用缓冲 负数表示使用系统默认设置,正数表示指定大小缓冲

file.readline()输出一行,file.readlines()输出所有

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',
...]

file.tell()获取在文件当前位置

f1.tell()
1099

file.seek(offset[,whence])控制位置

whence起点:0,从文件头;1,从当前位置;2,从末尾  offset偏移量

f1.seek(10,0)
f1.readline()
':root:/root:/bin/bash\n'

file.write('some words')写入文件

file.flush()将文件内容从内存写入磁盘

原创文章,作者:海马,如若转载,请注明出处:http://www.178linux.com/9906

(0)
海马海马
上一篇 2015-12-10 22:29
下一篇 2015-12-14

相关推荐

  • keepalived+lvs-dr实现高可用负载均衡

    keepalived+lvs-dr实现高可用负载均衡 实验拓扑 实验要求 RS1与RS2地址为172.18.27.201/202 VS1和VS2地址为172.18.27.103/200,VIP为172.18.27.254 VS1和VS2实现lvs-dr负载均衡及高可用性,且vs为sorry sever。 keepalived是单主模式。 实验步骤 各个主机安…

    2017-05-14
  • LAMP部署之NFS共享网络存储

    LAMP部署之NFS共享网络存储 架构图: 说明:     当一个网站的访问量上来之后,一台WebServer服务器无法应付那么高的并发,需要横向扩展Web服务器数量,     当我们访问网页,向Web服务器请求资源时,资源主要分为静态资源和动态资源(程序处理),  &…

    Linux干货 2016-06-20
  • iptables的一个小文档

    iptables:    iptables五表五链        felter表            INPUT   …

    Linux干货 2017-04-30
  • 关于大型网站技术演进的思考(十一)–网站静态化处理—动静分离策略(3)

    原文出处: 夏天的森林   前文里我讲到了网站静态化的关键点是动静分离,动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。由此可见,网站静态化处理的核心就是动静分离和缓存两大方面,上篇我简单讲述了动静…

    Linux干货 2015-03-11
  • 第六周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;          cp/etc/rc.d/rc.sysinit /tmp/     &nbs…

    2017-09-04
  • CentOS下搭建LAMP

    实验:centos7.3实现lamp应用wordpress环境 host1 httpd,php  host2 mariadb1 yum install httpd php php-mysqlyum install mariadb-serversystemctl start httpdsystemctl start mariadb 2 创建数据库及用户mysq…

    2017-10-16

评论列表(1条)

  • stanley
    stanley 2015-12-15 22:50

    内容上粗糙了点,是看完视频的笔记?