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

相關推薦

  • 第十三周作業

    “1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名; …

    Linux干貨 2017-08-13
  • linux網絡管理 一

    什么是網絡?         是指將具有獨立功能的計算機和周邊設備,通過通信線路連接起來,在網絡軟件的支持下,實現資源的共享和數據的整個系統。 網絡的特征:         速度      …

    2017-03-16
  • 第二周作業

    1. Linux上文件管理類命令總結及示例 文件管理命令主要由查看類命令和管理類命令組成 查看類命令 cat:顯示文本 cat [OPTION]… [FILE].. tac:倒序查看文件內容 tac [OPTION]… [FILE].. head:顯示文件前幾行內容 head [OPTION]… [FILE].. -n#:指定獲取前#行,也可直接使用-# -…

    Linux干貨 2016-12-10
  • 第六周課程作業

    1、復制/etc/rc.d/init.d/functions文件至/tmp目錄,將/tmp/functions文件中 的以至少一個空白字符開頭的行的行首加# ~]# cp /etc/rc.d/init.d/functions /tmp~]# vim /tmp/functions %s@^[[:space:]]\+@#@g 2、復制/boot/gru…

    Linux干貨 2016-12-12
  • 常用的MySQL數據庫備份

    常用的MySQL數據庫備份方式 前言 為什么需要備份數據? 數據的備份類型 MySQL備份數據的方式 備份需要考慮的問題 設計合適的備份策略 實戰演練 使用cp進行備份 使用mysqldump+復制BINARY LOG備份 使用lvm2快照備份數據 使用Xtrabackup備份 總結 前言 我們試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可…

    2015-06-13
  • DNS and BIND 介紹及安裝

    DNS DNS是什么 為什么要用DNS 域名 BIND DNS是什么 DNS:Domain Name System,域名系統DNS作為域名和IP地址相互映射的一個分布式數據庫,能夠讓用戶更方便的訪問互聯網。它的正向映射是吧一個主機和IP地址關聯起來,它的反向映射則是IP地址到主機名。DNS協議運行在UDP協議上,使用53端口。 為什么要用DNS 連接到互聯網…

    Linux干貨 2016-05-28

評論列表(1條)

  • stanley
    stanley 2015-12-15 22:50

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

欧美性久久久久