一、for 循環(huán)簡介
循環(huán)就是重復做某件事,for循環(huán)是python提供第二種循環(huán)機制(第一種是while循環(huán)),理論上for循環(huán)能做的事情,while循環(huán)都可以做。
for 的語句格式如下:
for ?<變量> ??in ??<循環(huán)序列>:
????????【循環(huán)體】
注:通過 for 循環(huán)依次將 <循環(huán)序列> 中的數(shù)據(jù)取出賦值給 <變量>,再通過【循環(huán)體】進行處理。
例1:for 循環(huán)訪問列表
# for 循環(huán)訪問列表
代碼:
list = ['張三', '李四', '王五']
for i?in list:
????print(i)
輸出結果:
張三
李四
王五
注意: i這個變量是在 for 循環(huán)中定義的,意思是,依次取出 list 中的每一個元素,并把元素賦值給i,然后執(zhí)行for循環(huán)體。
例2: for 循環(huán)訪問字典
代碼:
dict = {'張三': 98, '李四': 89, '王五': 56}
for key, value in dict.items():
????print(key, value)
輸出結果:
張三 98
李四 89
王五 56
例3: for 循環(huán)訪問字符串
# for 循環(huán)訪問字符串,可以依次讀取每個字符
代碼:
for each?in 'Trkczx':
????print(each)
輸出結果:
'T'
'r'
'k'
'c'
'z'
'x'
二、for ... else ... (比較少用到)
for ... else ... 格式:
for ?<變量> ??in ??<循環(huán)序列>:
????????【循環(huán)體】
else:
?????????【else的語句塊】
注:for 遍歷序列,無 break 結束當前循環(huán),循環(huán)結束后執(zhí)行 else 語句塊
例1:
list = ['張三', '李四', '王五']
for i?in list:
????print(i)
else:
????print('循環(huán)完整結束后執(zhí)行')
輸出結果:
張三
李四
王五
循環(huán)完整結束后執(zhí)行
例2:
list = ['張三', '李四', '王五']
for i?in list:
????print(i)
????if i?== '李四':
????????break ?# break 結束循環(huán),for 下的 else 也不會執(zhí)行
else:
????print('循環(huán)完整結束后執(zhí)行')
輸出結果:
張三
李四
例3:
list = ['張三', '李四', '王五']
for i?in list:
????if ?== '李四':
????????continue ?# continue 跳過本次循環(huán),進入下一次循環(huán)
????print(i) ?# 如果被 continue 本條語句不會執(zhí)行
else:
????print('循環(huán)完整結束后執(zhí)行')
輸出結果:
張三
王五
循環(huán)完整結束后執(zhí)行
注:continue 只是跳過本次循環(huán),循環(huán)結束后 else 語句塊最后被執(zhí)行
三、for 循環(huán)嵌套
循環(huán)嵌套為循環(huán)中嵌套另外一層循環(huán)。
for <外層循環(huán)變量> in <外層循環(huán)序列>:
?????for <內(nèi)層循環(huán)變量> in <內(nèi)層循環(huán)序列>:
?????????【內(nèi)層循環(huán)體】
?????【外層循環(huán)體】
這個只是一個for 與 for 的循環(huán)嵌套,當然也可以使用 for 與 while 嵌套。
循環(huán)嵌套經(jīng)典
例1:倒三角的九九乘法表
# 九九乘法表
運行代碼:
for i in range(1, 10):
????for j in range(i, 10):
????????print('%d * %d = %d' % (i, j, i * j), end='\t')
print('') ?# 控制換行
運行結果:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7 1 * 8 = 8 1 * 9 = 9
2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18
3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27
4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36
5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45
6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54
7 * 7 = 49 7 * 8 = 56 7 * 9 = 63
8 * 8 = 64 8 * 9 = 72
9 * 9 = 81
例2:冒泡排序
# 冒泡排序
(1)定義
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。
它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重復地進行,直到?jīng)]有相鄰元素需要交換,也就是說該元素列已經(jīng)排序完成。
這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
(2)運行代碼:
list = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]
n=0
for i in range(len(list)-1):
????for j in range(len(list)-i-1):
????????if list[j] < list[j+1]:
????????????list[j],list[j+1]=list[j+1],list[j]
????n+=1
print(list)
(3)運行結果:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
(4)代碼解釋
以下是代碼的詳細含義:
-
?list是一個包含需要排序的數(shù)字的列表。
-
n被初始化為0,但在這段代碼中沒有用于任何有意義的目的。
-
外部循環(huán)使用變量i,它在范圍從0到列表的長度減1之間迭代。這控制了需要多少次遍歷整個列表。
-
內(nèi)部循環(huán)使用變量j,它在范圍從0到列表的長度減去當前的i之間迭代。這是因為,在每次遍歷后,最大的元素“冒泡到”列表的末尾,因此在后續(xù)的遍歷中無需再考慮它。
-
在內(nèi)部循環(huán)中,你將 list[j] 與 list[j+1] 進行比較。如果 list[j] 比 list[j+1] 小,就交換它們的位置。這個過程一直持續(xù),直到最大的元素移動到列表的末尾。
-
在每次遍歷列表后,最大的未排序元素會移動到末尾。這意味著最大的元素已經(jīng)處于正確的位置。
-
當所有遍歷都完成后,列表將按降序排列,然后使用 print(list)?將其打印出來。
四、for循環(huán)訪問迭代對象
迭代器有兩個基本的方法:iter() 和 next()
iter() 創(chuàng)建一個迭代器
next() 訪問迭代元素,訪問后指針向下移一行
示例:
>>>list=[0,1,2,3,4]
>>> it = iter(list) ?# 創(chuàng)建迭代對象
>>> print (next(it)) ?# 訪問當前指針元素,結束后指針向下移一步
0
>>> print (next(it))
1
>>>
2、for循環(huán)訪問迭代器
示例:
代碼:
list = ['張三', '李四', '王五']
a= iter(list) ?# 創(chuàng)建迭代器對象
for each?in a: ?# 循環(huán)訪問迭代器
print(each)
運行結果:
張三
李四
王五
注意:迭代器訪問數(shù)據(jù)比通過索引循環(huán)訪問速度更快,數(shù)據(jù)量大時一般會使用迭代器
五、range ( ) 類控制循環(huán)訪問
range ( ) 為 Python 的自有類,range() 帶有內(nèi)置的迭代方法__iter__() 和 __next()__ ,它是一個可迭代對象,我們可以通過 for 訪問 range() 創(chuàng)建的迭代器。
注:__iter__() 和 __next()__ 左右均為兩個_下橫線
range 類初始化參數(shù)說明:
range(stop) 從0開始到stop結束(不包含 stop)返回一個產(chǎn)生整數(shù)序列的迭代對象。
range(start, stop[, step]) 從 start 開始到 stop 結束(不包含 stop)返回一個整數(shù)序列的迭代對象, step 為他的步長。
例1:
代碼:
for i in range(5):
????print(i)
輸出:
0
1
2
3
4
例2 :
代碼:
for i in range(1,5):
????print(i)
運行結果:
1
2
3
4
示例3:
代碼:
for i in range(1,5,2):
????print(i)
運行結果:
1
3
例4:
代碼:
for i in range(-1,-5,-2):
????print(i)
運行結果:
-1
-3
注意:start, stop, step 三個參數(shù)可以為負數(shù)
例5:
# 結合range()和len()函數(shù)以遍歷一個序列的索引。
代碼:
list = ['張三', '李四', '王五']
for i in range(len(list)):
????print(list[i])
運行結果:
張三
李四
王五
注:for 循環(huán)可作用的迭代對象遠不止 list,tuple,str,unicode,dict 等,任何可迭代對象都可以作用于 for 循環(huán),而內(nèi)部如何迭代我們通常并不用關心。文章來源:http://www.zghlxwxcb.cn/news/detail-847633.html
通??傻鷮ο笠话憔邆?iter() 和 next() 方法或者 __iter__() 和 __next()__ 方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-847633.html
到了這里,關于[Python入門]Python中的循環(huán)語句(for循環(huán)語句)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!