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

相关推荐

  • CentOS 7 安装 mysql-5.7.14

    在centos7上安装 路上遇过各种坑 把在centos7正确安装mysql-5.7.14分享一下 1. CentOs7 默认的数据库为MariaDB,先卸载MariaDB,否则安装mysql,引起冲突 rpm -qa mariadb rpm -e –nodeps mariadb 2. 准备好工作环境 mkdir /application&nbs…

    Linux干货 2017-05-07
  • Linux任务计划及内核管理

    作业管理:     前台作业:通过终端启动,且启动后一直占据终端;     后台作业:通过终端启动,但启动后随即转入后台运行(释放终端) 将作业放入后台的操作     1)运行中的作业:ctrl+z     2)还未执行的作业:command &   …

    Linux干货 2016-09-09
  • 函数

    函数,函数参数,参数解构,作用域,递归函数,匿名函数以及生成器的基本概念。

    2017-10-17
  • 软链接与硬链接

    软链接 硬链接

    2017-11-18
  • 网络N23期第四周grep

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -R /etc/skel /home/tuser1 && chmod g-r,o-r /home/tuser1 [root@localhost ~]# ls -l…

    系统运维 2016-12-05
  • nmap ncat tcpdump浅析

    nmap 的使用 nmap — 网络探测工具和安全/端口扫描器 Usage:nmap [ <扫描类型> …] [ <选项> ] { <扫描目标说明> } 扫描目标说明 -iL inputfilename (从列表中输入) 从 inputfilename中读取目标说明 [root@localhost&…

    Linux干货 2017-03-15

评论列表(1条)

  • stanley
    stanley 2015-12-15 22:50

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