- 本教程為python3文檔解讀
- 本教程面向完全型小白棠涮,只要你會在電腦上打字蜕径,那你就可以看懂泵督。
- 參考視頻觀看,味道更加:https://space.bilibili.com/186584185/#!/video
- 建議優(yōu)先閱讀本系列的《編程的本質(zhì)》這一章節(jié)搬泥。
- 推薦閱讀:《跟我讀python3文檔:016_帶你手撕程序,展現(xiàn)一個函數(shù)如何從思路到實(shí)現(xiàn)》
作者:咖喱py
貫穿始終的理念:別廢話伏尼,就是干佑钾!
往期回顧:
- 匿名函數(shù)lambda
- 列表的方法
- del關(guān)鍵字
- 列表推導(dǎo)式
文檔解讀
python3文檔第五小節(jié)鏈接地址:5. Data Structures
本章主要講解5.6. Looping Techniques(循環(huán)技巧)這個小節(jié)
5.6. Looping Techniques
在上一期結(jié)尾,我們說數(shù)據(jù)結(jié)構(gòu)將會和很多東西結(jié)合使用烦粒。本期休溶,我就來帶大家簡單領(lǐng)略下這種結(jié)合代赁。
1. 字典的items( )方法
items( )方法簡介:
- 作用:以列表形式,返回鍵兽掰、 值組成的元組元素芭碍。
- 參數(shù):無
- 返回值: 元組元素列表
我們直接看例子來理解:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> knights.items()
dict_items([('gallahad', 'the pure'), ('robin', 'the brave')])
結(jié)果是一個可迭代對象。
看到這個結(jié)果你可能有點(diǎn)迷惑孽尽,其實(shí)你可以把結(jié)果粗略的看成是下面這樣:
[('gallahad', 'the pure'), ('robin', 'the brave')]
一個列表窖壕,內(nèi)部元素是元組組成的。
如果這樣看的話杉女,是不是直觀了很多瞻讽?
應(yīng)用:
當(dāng)用for循環(huán)遍歷字典時(shí),鍵和對應(yīng)的值可以使用items()方法同時(shí)提取出來熏挎。
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
2. enumerate( )函數(shù)
enumerate翻譯為:枚舉
enumerate(iterable速勇,start = 0 )函數(shù)簡介:
- 作用:返回enumerate類型數(shù)據(jù)結(jié)構(gòu),內(nèi)部包含序列的下標(biāo)和下標(biāo)對應(yīng)的數(shù)據(jù)組成的元組坎拐。
- 參數(shù):
iterable -- 可迭代對象烦磁,包括:序列(例如:列表、元組哼勇、字符串)等都伪。
start -- 下標(biāo)起始位置,默認(rèn)是0 积担。 - 返回值: enumerate對象
我們直接看例子來理解:
>>> list(enumerate(['tic', 'tac', 'toe'])) #用list( )函數(shù)將enumerate類型轉(zhuǎn)化為列表類型陨晶。
[(0, 'tic'), (1, 'tac'), (2, 'toe')]
如果不理解上面的代碼不要緊,我們把上面的過程展開寫:
>>> a = ['tic', 'tac', 'toe'] #把一個列表賦值給a帝璧。
>>> b = enumerate(a) #把枚舉類型賦值給b珍逸。
>>> c = list(b) #把列表類型賦值給c。
>>> print(c) #打印c聋溜。
應(yīng)用:
用for循環(huán)遍歷一個可迭代對象時(shí)谆膳,使用enumerate()函數(shù)可以同時(shí)得到索引值和對應(yīng)的數(shù)據(jù)值。
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
3. zip( )函數(shù)
zip(*iterable)函數(shù)簡介:
- 作用:將多個可迭代對象相同索引值的對應(yīng)元素打包成元組撮躁。
- 參數(shù):可迭代對象漱病。如果不記得*iterable的星號的意思,請翻看:http://www.reibang.com/p/9bce0fbfb98a
- 返回值: zip對象(元組組成的序列)
我們直接看例子來理解:
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = zip(a,b)
>>> c
[(1, 4), (2, 5), (3, 6)]
#看明白了嗎把曼?相同索引值的數(shù)據(jù)被組合在了一個起杨帽,以元組的形式存在于新的列表中。
應(yīng)用:
同時(shí)遍歷兩個或更多的序列嗤军,使用zip( )函數(shù)可以成對讀取元素注盈。
>>> questions = ['name:', 'code:', 'favorite color:']
>>> answers = ['咖喱py', 'python', 'blue']
>>> for q, a in zip(questions, answers):
... print(q, a)
...
name: 咖喱py
code: python
favorite color: blue
4. sorted( )函數(shù)
sorted(iterable[, key][, reverse])函數(shù)簡介:
注意,之前我們在http://www.reibang.com/p/4269882480aa這期講解BNF時(shí)說過叙赚,中括號是可選參數(shù)的意思老客。
- 作用:給序列排序
- 參數(shù):
iterable -- 可迭代對象僚饭。
key -- 指定一個帶有一個參數(shù)的函數(shù),它用于從列表的每個元素中提取比較的關(guān)鍵字胧砰,意思是指定可迭代對象中的一個元素的某部分來進(jìn)行比較排序鳍鸵。
reverse -- 排序規(guī)則,reverse = True 反序 尉间, reverse = False 順序(默認(rèn))偿乖。 - 返回值: 排序后的可迭代對象
我們直接看例子來理解:
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> a = sorted(basket)
>>> a
['apple', 'apple', 'banana', 'orange', 'orange', 'pear']
應(yīng)用:
將sorted( )函數(shù)和set( )函數(shù)結(jié)合使用
如果不記得set()函數(shù),請翻看 http://www.reibang.com/p/48f7235ad8ab哲嘲,和 http://www.reibang.com/p/657074b2abbf
注:集合贪薪,最重要的特性是沒有重復(fù)
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
... print(f)
...
apple
banana
orange
pear
嘗試自行學(xué)習(xí)sorted( )函數(shù)的其他參數(shù)的用法,比如key眠副。
第五章節(jié)就算全部講完了画切。其中還有一些小的知識點(diǎn)省略了過去,比如序列的比較侦啸,條件控制部分槽唾。想提高的可以自行學(xué)習(xí)丧枪。
以上就是數(shù)據(jù)結(jié)構(gòu)與函數(shù)結(jié)合的一些展示用法光涂。
在實(shí)際編程中,這些是遠(yuǎn)遠(yuǎn)不夠的拧烦,以后你還會接觸其他數(shù)據(jù)結(jié)構(gòu)忘闻,比如collections庫的deque、Counter等恋博。
如果你想走出新手村齐佳,那么那些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和函數(shù)就是你必須要面對的boss戰(zhàn)。
努力前進(jìn)吧~