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.www58058.com/9906

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

相關推薦

  • 磁盤管理

    磁盤管理

    Linux干貨 2017-10-27
  • 20160802課堂練習題

    練習: 1、  當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 無法cd進入該目錄,但可以ls查看到該目錄下的文件,其余的任何操作都執行不了。 2、  當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 能夠進入該目錄,不能讀取到信息;但如果知道有哪些文件及目錄是可以創建…

    Linux干貨 2016-08-04
  • 魔術方法

    Edit 魔術方法 使用Python的魔術方法的最大優勢在于他們提供了一種簡單的方法來讓對象可以表現的像內置類型一樣。那意味著你可以避免丑陋的,違反直覺的,不標準的的操作方法。 特殊屬性 屬性 含義 __name__ 類、函數、方法等名字 __module__ 類定義所在的模塊名? __class__ 對象或類所屬的類 __bases__ 類的基類的元組,順…

    Linux干貨 2017-11-21
  • 第七周-磁盤管理、RAID及Shell腳本練習

    一、創建一個10G分區,并格式為ext4文件系統; (1)、 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2)、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@N1 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /…

    Linux干貨 2017-08-13
  • CentOS6.7上編譯安裝php

    環境:CentOS6.7,minimal安裝。 前提條件:安裝了編譯環境,安裝了Apache/Nginx,安裝了MySQL/MariaDB。具體安裝見:http://www.www58058.com/16583    http://www.www58058.com/17497  1、解決依賴關系: 請配置好yum源(系統安裝源及…

    Linux干貨 2016-06-03

評論列表(1條)

  • stanley
    stanley 2015-12-15 22:50

    內容上粗糙了點,是看完視頻的筆記?

欧美性久久久久