python切片 迭代 生成器

切片

在索引查詢中使用 : 查詢就是切片的標(biāo)志性用法

#聲明一個(gè)list
>>> L = list(range(100))
>>> L
[0, 1, 2, 3, ..., 99]
#0代表索引開(kāi)始的位置,3代表索引結(jié)束的位置
#缺省狀態(tài)下节预, **:** 前面是0叶摄,后面是list最后一個(gè)索引
#如L[:3](作用相同)看铆,L[1:](跳過(guò)第一個(gè))
>>> L[0:3]
[0, 1, 2]
  • 查詢索引可以是負(fù)數(shù)算灸,負(fù)數(shù)代表倒著查詢
  • 兩個(gè) : 時(shí),最后面的數(shù)字表示跳過(guò)個(gè)數(shù)
  • 原數(shù)據(jù)可以是list tuple贯莺,可以是字符串
  • 原數(shù)據(jù)是什么類型去扣,切片后仍然是該類型
#讀取后10位
>>> L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
#前10個(gè)柱衔,每?jī)蓚€(gè)讀取一個(gè)
>>> L[:10:2]
[0, 2, 4, 6, 8]

迭代

通過(guò)for...in來(lái)完成的就是迭代

  • dict迭代的是key。如果要迭代value愉棱,可以用for value in d.values()唆铐,如果要同時(shí)迭代key和value,可以用for k, v in d.items()奔滑。
  • 使用enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì)
#測(cè)試對(duì)象是否允許迭代
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
#類型轉(zhuǎn)換使用迭代
>>> for i, value in enumerate(['A', 'B']):
...     print(i, value)
...
0 A
1 B

列表生成式

將輸出與for寫(xiě)在一行的形式艾岂,生成結(jié)果不改變?cè)屑蠑?shù)據(jù),自動(dòng)生成轉(zhuǎn)換過(guò)渡集合

#有判斷的循環(huán)朋其,轉(zhuǎn)換成小寫(xiě)
>>>L1 = ['Hello', 'World', 18, 'Apple', None]
>>>[s.lower() for s in L1 if isinstance(s, str)]
['hello', 'world', 'apple']
#嵌套循環(huán)
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
#字典
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']

生成器

  • generator保存的是算法王浴,每次調(diào)用next(g),就計(jì)算出g的下一個(gè)元素的值梅猿,沒(méi)有元素的時(shí)候拋出StopIteration的錯(cuò)誤氓辣。
  • 使用了關(guān)鍵字yield,程序遇到它就停止袱蚓,再次執(zhí)行next函數(shù)時(shí)钞啸,會(huì)從上次停止的位置繼續(xù)。
#b的值直接賦給了a喇潘,a+b的值直接賦給了b体斩,沒(méi)有臨時(shí)變量完成了交換
a, b = b, a + b
#這樣的格式用于捕獲直接使用next函數(shù)導(dǎo)致的異常值
try:
    pass
except StopIteration as e:
    raise #ex.value
else:
    pass
finally:
    pass
#楊輝三角
def triangles():
    L = [1]
    while True:
        yield L[:]
        L.append(0)
#打印出修改結(jié)果前的數(shù)據(jù),便于理解列表生成式
        #print('循環(huán)修改前',L)
        L = [L[i - 1] + L[i] for i in range(len(L))]
#調(diào)用楊輝三角
for t in triangles():
    print(t)

迭代器

  • 迭代對(duì)象 Iterable颖低,是有限的數(shù)據(jù)絮吵,可以for循環(huán)
  • 迭代器 Iterator,是無(wú)限大算法忱屑,可以next取值
  • 將迭代對(duì)象 Iterable→迭代器 Iterator 使用iter()函數(shù)

下一文 函數(shù)式編程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹬敲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子莺戒,更是在濱河造成了極大的恐慌粱栖,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脏毯,死亡現(xiàn)場(chǎng)離奇詭異闹究,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)食店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門渣淤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吉嫩,你說(shuō)我怎么就攤上這事价认。” “怎么了自娩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵用踩,是天一觀的道長(zhǎng)渠退。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脐彩,這世上最難降的妖魔是什么碎乃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮惠奸,結(jié)果婚禮上梅誓,老公的妹妹穿的比我還像新娘。我一直安慰自己佛南,他們只是感情好梗掰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嗅回,像睡著了一般及穗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绵载,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天拥坛,我揣著相機(jī)與錄音,去河邊找鬼尘分。 笑死猜惋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的培愁。 我是一名探鬼主播著摔,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼定续!你這毒婦竟也來(lái)了谍咆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤私股,失蹤者是張志新(化名)和其女友劉穎摹察,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體倡鲸,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡供嚎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峭状。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片克滴。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖优床,靈堂內(nèi)的尸體忽然破棺而出劝赔,到底是詐尸還是另有隱情,我是刑警寧澤胆敞,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布着帽,位于F島的核電站杂伟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仍翰。R本人自食惡果不足惜赫粥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歉备。 院中可真熱鬧傅是,春花似錦匪燕、人聲如沸蕾羊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)龟再。三九已至,卻和暖如春尼变,著一層夾襖步出監(jiān)牢的瞬間利凑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工嫌术, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哀澈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓度气,卻偏偏與公主長(zhǎng)得像割按,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磷籍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • PYTHON-進(jìn)階-ITERTOOLS模塊小結(jié)轉(zhuǎn)自wklken:http://wklken.me/posts/20...
    C_Y_閱讀 974評(píng)論 0 2
  • 1.切片切片可以取list适荣、tuple、string的元素python語(yǔ)言中把字符串看做一個(gè)tuple院领,因此可以通...
    JEZAU閱讀 440評(píng)論 1 2
  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進(jìn)階...
    健康哥哥閱讀 2,035評(píng)論 1 3
  • Python的代碼不是越復(fù)雜越好弛矛,而是越簡(jiǎn)單越好,開(kāi)發(fā)效率越簡(jiǎn)單越高 切片 另一種方法 L[0:3] L[0:3]...
    Gopal閱讀 89評(píng)論 0 0
  • 圖片來(lái)源:網(wǎng)絡(luò) 夜已深,屋外狂風(fēng)暴雨强法。 李晴睡的正香扒寄。奶奶卻摸索著起身,“哐當(dāng)”一聲拟烫,碰倒了桌子上的水杯该编。李晴被驚...
    蘭葉雨閱讀 521評(píng)論 0 4