Python學習之路——控制語句,迭代器, 列表解析

來源:互聯網
上載者:User

標籤:python   編程   語言   

條件陳述式 if都是大家的老朋友了,直接程式碼範例,簡單易上手:
<span style="font-size:18px;">>>> lang = "python">>> if lang == "C":...     print "C language"... elif lang == "Java":...     print "Java language"... else:...     print "Python language"... Python language>>> </span><span style="font-size:14px;"></span>

迴圈語句 while直接上代碼,就是幹
<span style="font-size:18px;">>>> count = 0>>> while(count < 9):...     print 'the index is:', count...     count += 1... the index is: 0the index is: 1the index is: 2the index is: 3the index is: 4the index is: 5the index is: 6the index is: 7the index is: 8>>> </span><span style="font-size:14px;"></span>

for不解釋,直接上
<span style="font-size:18px;">>>> game = ['LOL', 'GT', 'CSOL']>>> for g in game:...     print 'you play %s' % game... you play ['LOL', 'GT', 'CSOL']you play ['LOL', 'GT', 'CSOL']you play ['LOL', 'GT', 'CSOL']>>> for index in range(len(game)):...     print 'you play %s' % game[index]... you play LOLyou play GTyou play CSOL>>> </span><span style="font-size:14px;"></span>

break, continue, passbreak: 熟悉C的朋友都熟悉,打破迴圈continue: 跳過後面的語句直接進行下一次迴圈pass:空語句, 就比如C中空的大括弧
while-else, for-else(還是挺方便的)當迴圈和else語句一起使用時(描述不是很準確,看代碼就懂了),迴圈若正常退出,則會運行else中的語句。如何迴圈是通過break語句結束的,那麼else中的語句也將跳過。下面引用書上的代碼:maxFact.py
<span style="font-size:18px;">def showMaxFactor(num):        count = num/2        while count > 1:                if num % count == 0:                        print 'largest factor of %d is %d' % (num, count)                        break;                count -= 1        else:                print num, 'is prime'for eachNum in range(10,21):        showMaxFactor(eachNum)</span><span style="font-size:14px;"></span>
運行結果:
<span style="font-size:18px;">linux-ne7w:~/python> python maxFact.py largest factor of 10 is 511 is primelargest factor of 12 is 613 is primelargest factor of 14 is 7largest factor of 15 is 5largest factor of 16 is 817 is primelargest factor of 18 is 919 is primelargest factor of 20 is 10</span><span style="font-size:14px;"></span>

迭代器迭代器為類序列對象提供了一個類序列的介面。迭代器非常靈活,它可以迭代那些表現出序列行為的對象。例如字典的鍵,一個檔案的所有行等等。
  • 為什麼要迭代器:
  • 提供了可擴充的迭代器介面
  • 對列表迭代提供了效能上的增強
  • 在字典迭代中效能提升
  • 建立真正的迭代介面,而不是原來的隨機對象訪問
  • 與所有已經存在的使用者定義的類以及擴充的類比序列和映射的對象向後相容
  • 迭代非序列集合時,可以建立更簡潔可讀的代碼
怎麼迭代:首先可以用iter()函數返回被迭代對象的迭代器,然後調用迭代器的next()方法擷取下一項。當所有項都擷取了,會引發一個StopIteration異常,告訴調用者迭代完成。迭代器是單向通行的,只能向後移動。 使用迭代器:
<span style="font-size:18px;">>>> t = (123, 'text', 66.66)>>> t(123, 'text', 66.66)>>> i = iter(t)>>> i.next()123>>> i.next()'text'>>> i.next()66.66>>> i.next()Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration>>> </span><span style="font-size:14px;"></span>
若在實際應用中,這樣寫實在夠嗆。python實在太智能,在實際的應用中,python會幫你處理。看一個迭代檔案的例子
<span style="font-size:18px;">>>> f = open('text.txt', 'r')>>> for eachLine in f:...      print eachLine,... This is just for a testeveryone should learn programming, programming teach you thinking.forget my poor english.haha.</span><span style="font-size:14px;"></span>
for迴圈會自動調用迭代器的next()方法,並處理StopIteration異常。
警告:在迭代可變對象的時候不要修改它,,到時候就boom,程式崩潰了。
列表解析列表解析(List comprehensions)來自於函數式程式設計語言Haskell。它用來動態建立列表。列表解析的文法:[expr for iter_var in iterable]按我的理解(產生列表元素),它等價於:for iter_var in iterable:expr
看幾個例子:
<span style="font-size:18px;">[x ** 2 for x in range(6)][0, 1, 4, 9, 16, 25]>>> seq = [11, 10, 89, 32, 43, 22, 55, 23, 21, 32]>>> [x for x in seq if x % 2][11, 89, 43, 55, 23, 21]</span>
<span style="font-size:18px;">>>> [(x+1,y+1) for x in range(3) for y in range(4)][(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4)]>>> </span><span style="font-size:14px;"></span>

產生器運算式產生器運算式是列表解析的一個擴充。目前還不是很熟悉,就先這樣吧。





Python學習之路——控制語句,迭代器, 列表解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.