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 23:20

相关推荐

  • 马哥教育网络班20期+第1周课程练习

    1、描述计算机的组成及其功能。  (1)组成:运算器、控制器、存储器、输入设备、输出设备  (2)功能:数值计算、数据处理、自动控制、辅助设计、辅助教学、人工智能、娱乐活动 2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。  (1)主要发行版本之间关系    基于slackware:sus…

    Linux干货 2016-06-23
  • CentOS 5和6的启动流程

    一、Linux组成     1. linux:kernel+rootfs         kernrl的作用:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能      &nbsp…

    Linux干货 2016-09-18
  • 第九周作业

    awk基础 简介        AWK是一种优良的文本处理工具。它是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一,相比sed常常作用于一整行的处理,awk比较倾向于将一行分成数个“字段”来处理。所以,awk相当适合处理小型的数据处理。 基础用法 awk[选项] ‘program’…

    2017-07-16
  • sed讲解与使用

            sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理…

    Linux干货 2016-08-15
  • N25第二周作业 文件管理类命令cp mv rm以及 bash特性之文件名通配

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。         文件管理类命令主要有cp, mv, rm          cp用于单个文件的复制,例如:  &nb…

    Linux干货 2016-12-13
  • 第四周作业

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

    Linux干货 2017-01-18

评论列表(1条)

  • stanley
    stanley 2015-12-15 22:50

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