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

相关推荐

  • shell脚本编程之判断语句

    一、单分支if语句     格式:if 判断条件;then        statement1        statement2          …     &nb…

    Linux干货 2016-01-01
  • 推荐-DNS架设实验

    DNS架设实验 实验拓扑 实验准备 流程 测试 总结 实验拓扑: 1.对于来自内网的DNS正反向解析,并实现view选择指定解析库解析。2.对于来自外网的DNS正向解析,并实现view选择指定解析库解析。3.实现主从服务器结构。4.实现一个完成对一个子域的授权。5.子域中的所有查询xiao.com.的信息都转向192.168.1.1解析。 1.根据view,…

    2016-04-19
  • 磁盘管理详解

    linux系统如何识别硬盘 硬盘类型:        按接口可划分为        并行             &nb…

    Linux干货 2016-08-29
  • systemd

    systemd 启动流程:POST -> BIOS -> MBR bootloader -> kernel 临时根 -> 根文件系统 -> init init 能够管理、控制init进程的模块,就是init系统 能够让系统在用户预定义的级别下运行 设备管理器: sysvinit : CentOS 5 第一个广泛应用的init系统…

    Linux干货 2017-05-21
  • Linux文件管理相关及命令别名、执行状态等

    Linux文件管理相关命令有:cp,mv,rm         文件查看类命令有:cat,tac,head,tail,more,less         接下来,逐个介绍:   &…

    Linux干货 2016-11-04
  • Linux基础知识(四)

    本文主要讲述:Linux上用户和组的基本管理,具体包括一下内容 1、复制/etc/skel目录到/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id…

    Linux干货 2016-10-16

评论列表(1条)

  • stanley
    stanley 2015-12-15 22:50

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