廢話少說(shuō),上干活。
for的基本操作
for是用來(lái)循環(huán)的,是從某個(gè)對(duì)象那里依次將元素讀取出來(lái)。看下面的例子,將已經(jīng)學(xué)習(xí)過(guò)的數(shù)據(jù)對(duì)象用for循環(huán)一下,看看哪些能夠使用,哪些不能使用。同時(shí)也是復(fù)習(xí)一下過(guò)往的內(nèi)容。
>>> name_list = list(name_str)
>>> name_list
['q', 'i', 'w', 's', 'i', 'r']
>>> for i in name_list: #對(duì)list也能用
... print i,
...
q i w s i r
>>> name_set = set(name_str) #set還可以用
>>> name_set
set(['q', 'i', 's', 'r', 'w'])
>>> for i in name_set:
... print i,
...
q i s r w
>>> name_tuple = tuple(name_str)
>>> name_tuple
('q', 'i', 'w', 's', 'i', 'r')
>>> for i in name_tuple: #tuple也能呀
... print i,
...
q i w s i r
>>> name_dict={"name":"qiwsir","lang":"python","website":"qiwsir.github.io"}
>>> for i in name_dict: #dict也不例外
... print i,"-->",name_dict[i]
...
lang --> python
website --> qiwsir.github.io
name --> qiwsir
除了上面的數(shù)據(jù)類(lèi)型之外,對(duì)文件也能夠用for,這在前面有專(zhuān)門(mén)的《不要紅頭文件》兩篇文章講解有關(guān)如何用for來(lái)讀取文件對(duì)象的內(nèi)容。看官若忘記了,可去瀏覽。
for在list解析中,用途也不可小覷,這在講解list解析的時(shí)候,業(yè)已說(shuō)明,不過(guò),還是再?gòu)?fù)習(xí)一下為好,所謂學(xué)而時(shí)常復(fù)習(xí)之,不亦哈哈乎。
什么也不說(shuō)了,list解析的強(qiáng)悍,在以后的學(xué)習(xí)中會(huì)越來(lái)越體會(huì)到的,佩服佩服呀。
列位如果用python3,會(huì)發(fā)現(xiàn)字典解析、元組解析也是奇妙的呀。
要上升一個(gè)檔次,就得進(jìn)行概括。將上面所說(shuō)的for循環(huán),概括一下,就是下圖所示:
請(qǐng)輸入圖片描述
用一個(gè)文字表述:
iterating_var是對(duì)象sequence的迭代變量,也就是sequence必須是一個(gè)能夠有某種序列的對(duì)象,特別注意沒(méi)某種序列,就是說(shuō)能夠按照一定的腳標(biāo)獲取元素。當(dāng)然,文件對(duì)象屬于序列,我們沒(méi)有用腳標(biāo)去獲取每行,如果把它讀取出來(lái),因?yàn)橐彩且粋€(gè)str,所以依然可以用腳標(biāo)讀取其內(nèi)容。
zip
zip是什么東西?在交互模式下用help(zip),得到官方文檔是:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Return a list of tuples, where each tuple contains the i-th element from each of the argument sequences. The returned list is truncated in length to the length of the shortest argument sequence.
通過(guò)實(shí)驗(yàn)來(lái)理解上面的文檔:
>>> m = {"name","lang"}
>>> n = {"qiwsir","python"}
>>> zip(m,n)
[('lang', 'python'), ('name', 'qiwsir')]
>>> s = {"name":"qiwsir"}
>>> t = {"lang":"python"}
>>> zip(s,t)
[('name', 'lang')]
zip是一個(gè)內(nèi)置函數(shù),它的參數(shù)必須是某種序列數(shù)據(jù)類(lèi)型,如果是字典,那么鍵視為序列。然后將序列對(duì)應(yīng)的元素依次組成元組,做為一個(gè)list的元素。
下面是比較特殊的情況,參數(shù)是一個(gè)序列數(shù)據(jù)的時(shí)候,生成的結(jié)果樣子:
這個(gè)函數(shù)和for連用,就是實(shí)現(xiàn)了:
上面這個(gè)相加的功能,如果不用zip,還可以這么寫(xiě):
以上兩種寫(xiě)法那個(gè)更好呢?前者?后者?哈哈。我看差不多了。還可以這么做呢:
前面多次說(shuō)了,list解析強(qiáng)悍呀。當(dāng)然,還可以這樣的:
新聞熱點(diǎn)
疑難解答
圖片精選