Python入門 遍歷循環 for...
一、for 循環簡介
for 為遍歷循環,可以遍歷任何序列的項目,如list,tuple,迭代器等。
for的語句格式如下:
for <變數> in <循環序列>:n 【循環體】n
釋:通過for循環依次將<循環序列>中的數據取出賦值給<變數>,通過【循環體】進行處理。
示例:
# for 循環訪問列表nlist = [woodman, Alan, Bobo]nfor name in list:n print(name)n
輸出結果:
woodman
AlanBobo
注意: name 這個變數是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 name,然後執行for循環體。
# for 循環訪問字元串,可以依次讀取每個字元nfor char in woodman木頭人:n print(char)n
輸出結果:
wo......頭人
注意:中文字元佔2~3個位元組(編碼決定utf-8佔3位元組),每個中文字元是一個值
二、for ... else ... (比較少用到)
for ... else ... 格式:
for <變數> in <循環序列>:n 【循環體】nelse:n 【else的語句塊】n
釋:for遍歷序列,無break結束當前循環,這循環結束後執行else語句塊
示例1:
list = [woodman, Alan, Bobo]nfor name in list:n print(name)nelse:n print(循環完整結束後執行)n
輸出結果:
woodmanAlanBobo循環完整結束後執行
示例2:
list = [woodman, Alan, Bobo]nfor name in list:n print(name)n if name == Alan:n break # break 結束循環,for下的else也不會執行nelse:n print(循環完整結束後執行)n
輸出結果:
woodmanAlan
示例3:
list = [woodman, Alan, Bobo]nfor name in list:n if name == Alan:n continue # continue 跳過本次循環,進入下一次循環n print(name) # 如果被 continue 本條語句不會執行nelse:n print(循環完整結束後執行)n
輸出結果:
woodmannBobon循環完整結束後執行n
注意:continue 只是跳過本次循環,循環結束後else語句塊最執行
示例4:
for 循環訪問字典
dict = {woodman: 98, Alan: 89, Bobo: 56}nfor key, value in dict.items():n print(key, value)n
輸出結果:
Alan 89
woodman 98Bobo 56
三、for循環嵌套
循環嵌套為循環中嵌套另外一層循環。
for <外層循環變數> in <外層循環序列>:n for <內層循環變數> in <內層循環序列>:n 【內層循環體】n 【外層循環體】 n
這個只是一個循環嵌套,你可以外層序號使用while內層循環使用for,或者外層for內存while。
循環嵌套經典示例1:
# 九九乘法表 倒三角,你可以試試輸出正三角nfor i in range(1, 10): # range()請看本章第五部分n for j in range(i, 10):n print(%d * %d = %d % (i, j, i * j), end=t)n print() # 控制換行n
循環嵌套經典示例2:
# 冒泡排序nlist = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]nlength = len(list)nfor i in range(length):n for j in range(length - i):n if list[length - j - 1] < list[length - j - 2]:n list[length - j - 1], list[length - j - 2] = list[length - j - 2], list[length - j - 1]nprint(list)n
四、for循環訪問迭代對象
1、迭代器簡介
Python 的 for循環不僅可以用在list或tuple上,還可以作用在其他任何可迭代對象上。
迭代操作就是對於一個集合操作,無論該集合是有序還是無序,我們用 for 循環總是能依次取出集合的每一個元素。
釋義: 集合是指包含一組元素的數據結構,包括:
有序集合:list,tuple,str和unicode;無序集合:set無序集合併且具有 key-value 對:dict(Python3.6後字典為有序)
迭代器有兩個基本的方法:iter() 和 next()
iter() 創建一個迭代器
next() 訪問迭代元素,訪問後指針向下移一行
示例:
>>>list=[0,1,2,3,4]n>>> it = iter(list) # 創建迭代器對象n>>> print (next(it)) # 訪問當前指針元素,結束後迭代器指針向下移一步n0n>>> print (next(it)) # n1n>>>n
2、for循環訪問迭代器
示例:
list = [woodman, Alan, Bobo]nit = iter(list) # 創建迭代器對象nfor name in it: # 循環訪問迭代器n print(name)n
注意:迭代器訪問數據比通過索引循環訪問速度更快,數據量大時一般會使用迭代器
五、range() 類控制循環訪問
range() 為Python的自有類,range() 帶有內置的迭代方法__iter__()和__next()__,它是一個可迭代對象,我們可以通過for訪問range()類序列。
range類初始化參數說明:
range(stop) 從0開始到stop結束(不包含stop)返回一個產生整數序列的迭代對象
range(start, stop[, step]) 從start開始到stop結束(不包含stop)返回一個產生整數序列的迭代對象,step為他的步長
示例1:
for i in range(5):n print(i, end=-)n
輸出:0-1-2-3-4-
示例2 :
for i in range(1,5):n print(i, end=-)n
輸出:1-2-3-4-
示例3:
for i in range(1,5,2):n print(i, end=-)n
輸出:1-3-
示例4:
for i in range(-1,-5,-2):n print(i)n
輸出結果
-1-3
注意:start, stop, step 三個參數可以為負數
示例5:
# 結合range()和len()函數以遍歷一個序列的索引,如下所示.nlist = [woodman, Alan, Bobo]nfor i in range(len(list)):n print(i,list[i])n
輸出結果:
0 woodman1 Alan2 Bobo
注意:for 循環可作用的迭代對象遠不止 list,tuple,str,unicode,dict等,任何可迭代對象都可以作用於for循環,而內部如何迭代我們通常並不用關心。
通常可迭代對象一般具備iter()和next()方法或者__iter__()和__next()__方法。
推薦閱讀:
※Python面向對象編程從零開始(4)—— 小姐姐請客下篇
※PyQt5系列教程(11):今天的消息挺全哦!
※PyQt5番外篇(1):PyQt5與Opencv的小小融合
※Python爬蟲入門—分析Ajax爬取今日頭條美圖
※Python從零開始系列連載(19)——Python特色數據類型(列表)(下)