python學(xué)習(xí)5

廖雪峰老師的python教程筆記

1、切片(Slice)

取列表或元組指定索引范圍的元素的簡(jiǎn)便寫(xiě)法(也可用循環(huán))

L[0:3] 表示索引從0開(kāi)始,till索引3為止,但不包括3

當(dāng)是0時(shí),也可以省略不寫(xiě)。

同時(shí)支持倒數(shù)切片 L[-2:],不寫(xiě)默認(rèn)到最后(取出后兩個(gè)數(shù))

L[-2:-1]不等于L[-2:]? 第一個(gè)不包括-1最后一個(gè)元素

L[:10:2] 前十個(gè)數(shù) 每隔兩個(gè)取一次

L[::5] 原列表L每隔5個(gè)取一個(gè)

對(duì)于不可變的元組和str也可以用切片

(0, 1, 2, 3, 4, 5)[:3]? 取前三個(gè)? 輸出類型仍未元組

'ABCDEFG'[::2]? 隔兩個(gè)取

2、迭代(for..in..)

其實(shí)就是遍歷list、tuple,python中也適用于無(wú)下標(biāo)的字典,但因?yàn)闊o(wú)序,所以每次運(yùn)行順序不同;字符串也適用,只要對(duì)象是可迭代對(duì)象即可。

>>> from collections import Iterable

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

True

默認(rèn)情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時(shí)迭代key和value,可以用for k, v in d.items()

也可同時(shí)迭代索引和元素本身

for i, value in enumerate(['A','B','C']):

? print(i, value)

3、生成列表

(1)? ?list(range(1,11))

(2)? ?L = []

? ? ? ? for x in range(1,11):

? ? ? ? ? ? ? ?L.append(x * x)

(3)??[x * x for x in range(1,11)]

(4)兩個(gè)循環(huán)形成全排列

?>>> [m + n for m in 'ABC' for n in 'XYZ']['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']

(5)for后還可加if篩選

>>> [x * x for x in range(1,11) if x %2 == 0][4,16,36,64,100]

前面x*x就是對(duì)遍歷后的元素進(jìn)行的操作,然后把所有元素組成列表

>>> d = {'x':'A','y':'B','z':'C'}

>>> [k +'='+ v for k, v in d.items()]

? ? ? ? ['y=B','x=A','z=C']

4、生成器generator

列表元素可以按照某種算法推算出來(lái),不必事先全部?jī)?chǔ)存在其中,浪費(fèi)內(nèi)存,要什么取什么。generator保存的是算法。

(1)只要把一個(gè)列表生成式的[]改成()

g = (x * x for x in range(10))

for n in g:

... print(n)

(2)如果一個(gè)函數(shù)定義中包含yield關(guān)鍵字,那么這個(gè)函數(shù)就不再是一個(gè)普通函數(shù),而是一個(gè)generator,在每次調(diào)用next()的時(shí)候執(zhí)行,遇到y(tǒng)ield語(yǔ)句返回,再次執(zhí)行時(shí)從上次返回的yield語(yǔ)句處繼續(xù)執(zhí)行。

return 也結(jié)束生成器函數(shù)

5、迭代器

可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值,直到?jīng)]有數(shù)據(jù)時(shí)拋出StopIteration錯(cuò)誤的對(duì)象稱為迭代器:Iterator。

生成器都是Iterator對(duì)象,但list、dict、str雖然是Iterable可迭代對(duì)象,卻不是Iterator迭代器。

Python的Iterator對(duì)象表示的是一個(gè)數(shù)據(jù)流,可以把這個(gè)數(shù)據(jù)流看做是一個(gè)有序序列,但我們卻不能提前知道序列的長(zhǎng)度,只能不斷通過(guò) next(生成器函數(shù)) 函數(shù)實(shí)現(xiàn)按需計(jì)算下一個(gè)數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容