欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

跟老齊學(xué)Python之for循環(huán)語句

 更新時間:2014年10月02日 15:46:45   投稿:hebedich  
看這個標(biāo)題,有點(diǎn)匪夷所思嗎?為什么for是難以想象的呢?因?yàn)樵趐ython中,它的確是很常用而且很強(qiáng)悍,強(qiáng)悍到以至于另外一個被稱之為迭代的東西,在python中就有點(diǎn)相形見絀了。在別的語言中,for的地位從來沒有如同python中這么高的。

廢話少說,上干活。

for的基本操作

for是用來循環(huán)的,是從某個對象那里依次將元素讀取出來??聪旅娴睦?,將已經(jīng)學(xué)習(xí)過的數(shù)據(jù)對象用for循環(huán)一下,看看哪些能夠使用,哪些不能使用。同時也是復(fù)習(xí)一下過往的內(nèi)容。

復(fù)制代碼 代碼如下:

>>> name_str = "qiwsir"
>>> for i in name_str:  #可以對str使用for循環(huán)
...     print i,
...                    
q i w s i r

>>> name_list = list(name_str)
>>> name_list
['q', 'i', 'w', 's', 'i', 'r']
>>> for i in name_list:     #對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ù)類型之外,對文件也能夠用for,這在前面有專門的《不要紅頭文件》兩篇文章講解有關(guān)如何用for來讀取文件對象的內(nèi)容??垂偃敉浟?,可去瀏覽。

for在list解析中,用途也不可小覷,這在講解list解析的時候,業(yè)已說明,不過,還是再復(fù)習(xí)一下為好,所謂學(xué)而時常復(fù)習(xí)之,不亦哈哈乎。

復(fù)制代碼 代碼如下:

>>> one = range(1,9)        
>>> one
[1, 2, 3, 4, 5, 6, 7, 8]
>>> [ x for x in one if x%2==0 ]
[2, 4, 6, 8]

什么也不說了,list解析的強(qiáng)悍,在以后的學(xué)習(xí)中會越來越體會到的,佩服佩服呀。

列位如果用python3,會發(fā)現(xiàn)字典解析、元組解析也是奇妙的呀。

要上升一個檔次,就得進(jìn)行概括。將上面所說的for循環(huán),概括一下,就是下圖所示:

請輸入圖片描述

用一個文字表述:

復(fù)制代碼 代碼如下:

for iterating_var in sequence:
    statements

iterating_var是對象sequence的迭代變量,也就是sequence必須是一個能夠有某種序列的對象,特別注意沒某種序列,就是說能夠按照一定的腳標(biāo)獲取元素。當(dāng)然,文件對象屬于序列,我們沒有用腳標(biāo)去獲取每行,如果把它讀取出來,因?yàn)橐彩且粋€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.
通過實(shí)驗(yàn)來理解上面的文檔:

復(fù)制代碼 代碼如下:

>>> a = "qiwsir"
>>> b = "github"
>>> zip(a,b)
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]
>>> c = [1,2,3]
>>> d = [9,8,7,6]
>>> zip(c,d)
[(1, 9), (2, 8), (3, 7)]
>>> e = (1,2,3)
>>> f = (9,8)
>>> zip(e,f)
[(1, 9), (2, 8)]

>>> 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是一個內(nèi)置函數(shù),它的參數(shù)必須是某種序列數(shù)據(jù)類型,如果是字典,那么鍵視為序列。然后將序列對應(yīng)的元素依次組成元組,做為一個list的元素。

下面是比較特殊的情況,參數(shù)是一個序列數(shù)據(jù)的時候,生成的結(jié)果樣子:

復(fù)制代碼 代碼如下:

>>> a 
'qiwsir'
>>> c 
[1, 2, 3]
>>> zip(c)
[(1,), (2,), (3,)]
>>> zip(a)
[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]

這個函數(shù)和for連用,就是實(shí)現(xiàn)了:

復(fù)制代碼 代碼如下:

>>> c
[1, 2, 3]
>>> d
[9, 8, 7, 6]
>>> for x,y in zip(c,d):    #實(shí)現(xiàn)一對一對地打印
...     print x,y
...
1 9
2 8
3 7
>>> for x,y in zip(c,d):    #把兩個list中的對應(yīng)量上下相加。
...     print x+y
...
10
10
10

上面這個相加的功能,如果不用zip,還可以這么寫:

復(fù)制代碼 代碼如下:

>>> length = len(c) if len(c)<len(d) else len(d)    #判斷c,d的長度,將短的長度拿出來
>>> for i in range(length):
...     print c[i]+d[i]
...
10
10
10

以上兩種寫法那個更好呢?前者?后者?哈哈。我看差不多了。還可以這么做呢:

復(fù)制代碼 代碼如下:

>>> [ x+y for x,y in zip(c,d) ]
[10, 10, 10]

前面多次說了,list解析強(qiáng)悍呀。當(dāng)然,還可以這樣的:

復(fù)制代碼 代碼如下:

>>> [ c[i]+d[i] for i in range(length) ]
[10, 10, 10]

for循環(huán)語句在后面還會經(jīng)常用到,其實(shí)前面已經(jīng)用了很多了。所以,看官應(yīng)該不感到太陌生。

相關(guān)文章

  • Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    這篇文章主要介紹了Django打印出在數(shù)據(jù)庫中執(zhí)行的語句,文中給大家提到了Django 查看執(zhí)行的sql語句方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • python實(shí)現(xiàn)猜單詞小游戲

    python實(shí)現(xiàn)猜單詞小游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜單詞小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python數(shù)據(jù)庫封裝實(shí)現(xiàn)代碼示例解析

    Python數(shù)據(jù)庫封裝實(shí)現(xiàn)代碼示例解析

    這篇文章主要介紹了Python數(shù)據(jù)庫封裝實(shí)現(xiàn)代碼示例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Python win32com 操作Exce的l簡單方法(必看)

    Python win32com 操作Exce的l簡單方法(必看)

    下面小編就為大家?guī)硪黄狿ython win32com 操作Exce的l簡單方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Keras自定義IOU方式

    Keras自定義IOU方式

    這篇文章主要介紹了Keras自定義IOU方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python中的隨機(jī)函數(shù)小結(jié)

    python中的隨機(jī)函數(shù)小結(jié)

    這篇文章主要介紹了python中的隨機(jī)函數(shù)小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Python CVXOPT模塊安裝及使用解析

    Python CVXOPT模塊安裝及使用解析

    這篇文章主要介紹了Python CVXOPT模塊安裝及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python之鏈表的反轉(zhuǎn)方式

    python之鏈表的反轉(zhuǎn)方式

    這篇文章主要介紹了python之鏈表的反轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • django使用admin站點(diǎn)上傳圖片的實(shí)例

    django使用admin站點(diǎn)上傳圖片的實(shí)例

    今天小編就為大家分享一篇django使用admin站點(diǎn)上傳圖片的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • pycharm 使用心得(一)安裝和首次使用

    pycharm 使用心得(一)安裝和首次使用

    PyCharm 是我用過的python編輯器中,比較順手的一個。而且可以跨平臺,在macos和windows下面都可以用,這點(diǎn)比較好。
    2014-06-06

最新評論