Python基礎學習筆記(四)

介紹Python語言的一些獨到之處,比如切片、迭代、列表生成器、生成器和迭代器的用法

一、切片
1、給定一個列表L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
(1)、L[0:3]表示,從索引0開始取,直到索引3爲止,但不包括索引3。
(2)、python同樣支持倒數切片。L[-2:]表示[‘Bob’, ‘Jack’] ;L[-2:-1] [‘Bob’]
2、tuple也可以用切片操作,操作的結果仍是tuple。(0, 1, 2, 3, 4, 5)[:3] ,結果爲(0, 1, 2)。
3、字符串也可以用切片操作,操作結果仍是字符串。‘ABCDEFG’[:3] ,結果爲’ABC’。
二、迭代
1、給定一個列表或元組,可以用for循環輸出它的所有值,這種輸出模式稱爲迭代。
2、字典的三種迭代方式:給定字典d
(1)、key值迭代:for key in d;
(2)、value值迭代:for value in d.values();
(3)、key值和value值同時迭代:for k, v in d.items();
3、字符串也可以進行迭代。
4、用from collections import Iterable模塊判斷給定的類型是否可以迭代。例如:

>>> isinstance('abc', Iterable) # str是否可迭代
True

5、Python內置的enumerate函數可以把一個list變成索引-元素對,這樣就可以在for循環中同時迭代索引和元素本身。例如:

>>> for i, value in enumerate(['A', 'B', 'C']):
     print(i, value)
0 A
1 B
2 C

三、列表生成式
1、要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))。
2、列表生成式的應用:[x * x for x in range(1, 11)]
結果爲:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3、列表生成式的後邊還可以加上if選擇語句。例如:[x * x for x in range(1, 11) if x % 2 == 0]
結果爲:[4, 16, 36, 64, 100]
4、列表生成式還可以使用兩層循環,生成全排列。
例如:m + n for m in ‘ABC’ for n in ‘XYZ’]
結果爲:[‘AX’, ‘AY’, ‘AZ’, ‘BX’, ‘BY’, ‘BZ’, ‘CX’, ‘CY’, ‘CZ’]
四、生成器
1、創建一個generator的方法
(1)、通過迭代的方法,把一個列表生成式的[ ]改成( );
(2)、如果一個函數定義中包含關鍵字yield,那麼這個函數就不再是一個普通函數,而是一個generator;
2、輸出每一個denerator的元素的方法
(1)、通過next函數一個一個打印;
(2)、for…in…迭代;
五、迭代器
1、定義:可以被next()函數調用並不斷返回下一個值的對象稱爲迭代器:Iterator。
2、可以使用isinstance()判斷一個對象是否是Iterator對象。
3、生成器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。
4、把list、dict、str等Iterable變成Iterator就可以使用iter()函數。

發佈了9 篇原創文章 · 獲贊 4 · 訪問量 610
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章