大爽Python入門公開課教案 點擊查看教程總目錄
for循環
可迭代對象iterable
不同於其他語言。
python的for循環只能用於遍歷 可迭代對象iterable 的項。
即只支持以下語法:
for item in iterable:
...
其中
iterable是可迭代對象item是可迭代對象中的項。...是(要換成)循環時要執行的代碼。
可迭代對象的定義和具體原理解釋起來比較復雜(其實我也不是很會Orz)。
這里只需要了解基礎的。
哪些是(基礎的)可迭代對象。
回顧一下,我們現階段所學習的對象,
哪些是是可迭代的。
- 序列
sequence,包括字符串str,元組tuple,列表list - 字典
dict,迭代出的項是鍵key range(n)。
這里再進一步的介紹下range這個函數
range
首先回顧下for i in range(n)的效果,
i從0,1,2遍歷到n-1。
示例如下
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
實際上,該方法會產生一個可迭代對象。
不過可以用list方法將其產生的可迭代對象
轉換成列表。
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
有時可以使用這個辦法快速生成列表。
接下來,我們詳細的介紹下range這個函數。
為了便於理解,大家可以認為range函數有三種寫法:
range(end): 從0,1,2迭代到n-1。range(start, end): 從start, start+1, start+2 迭代到n-1。
即迭代時,每次增長1range(start, end, step): 從start, start+step, start+2*step迭代到n-1。
即迭代時,每次增長step。(step本身有步長的意思,或者說一步的距離)
實際上,第三種寫法range(start, end, step)是完整形態。
第二種寫法是step為1的特殊形態。(step默認值為1)
第一種寫法是start為0、step為1的特殊形態。(start默認值為0)
到這里,大家應該能理解:
我們上面調用range(5)的時候,
實際上得到range(0, 5)的原因了。
代碼示例
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
while循環
for循環的特點是,直接遍歷可迭代對象。
而while循環的特點是,按條件循環。
其語法如下。
while condition:
statement
condition,循環條件statement: 循環體。
- 如果
condition為True,則執行下方縮進的代碼塊statement。
否則,跳出while循環。 - (
condition為True時)執行完代碼塊statement之后,
回到循環開頭while condition處,重復步驟一。
使用示例
n = 5
while n > 0:
n -= 1
print(n)
其輸出為
4
3
2
1
0
break和continue
break: 直接退出(跳出)循環continue: 跳過本輪循環,進入下一輪循環。
break示例
lst = [10, 5, 2, 9, 3, -1, 6, 7]
for item in lst:
if item < 0:
break
print(item)
其輸出為
10
5
2
9
3
解釋:
遍歷列表中的每一項item
當item小於0時,break中斷了整個循環。
后面的項就無法被遍歷。
continue示例
lst = [10, 5, 2, 9, 3, -1, 6, 7]
for item in lst:
if item < 0:
continue
print(item)
其輸出為
10
5
2
9
3
6
7
解釋:
遍歷列表中的每一項item
當item小於0時,跳過本輪循環,本輪后面的代碼(即print(item))不再執行,
進入下一輪循環, 直接遍歷列表的下一個item。
其效果為遇到小於0的item不輸出(跳過輸出)。
