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

Alan

Bobo

注意: name 這個變數是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 name,然後執行for循環體。

# for 循環訪問字元串,可以依次讀取每個字元nfor char in woodman木頭人:n print(char)n

輸出結果:

w

o

......

注意:中文字元佔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

輸出結果:

woodman

Alan

Bobo

循環完整結束後執行

示例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

輸出結果:

woodman

Alan

示例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 98

Bobo 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 woodman

1 Alan

2 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特色數據類型(列表)(下)

TAG:Python | Python入门 | Python教程 |