Python入門--for...遍歷循環


一、for 循環簡介

for 為遍歷循環,可以遍歷任何序列,如 list,tuple,迭代器等。

for 的語句格式如下:

for  <變量>   in   <循環序列>:
【循環體】

釋:通過 for 循環依次將 <循環序列> 中的數據取出賦值給 <變量>,再通過【循環體】進行處理。

示例1:for 循環訪問列表

# for 循環訪問列表
list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
輸出結果:
woodman
Alan
Bobo

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

示例2: for 循環訪問字典

dict = {'woodman': 98, 'Alan': 89, 'Bobo': 56}
for key, value in dict.items():
print(key, value)

輸出結果:

Alan 89
woodman 98
Bobo 56

示例3: for 循環訪問字符串

# for 循環訪問字符串,可以依次讀取每個字符
for char in 'woodman木頭人':
print(char)
輸出結果:
w
o
......

注意:中文字符占2~3個字節(由編碼決定,utf-8占3字節),每個中文字符是一個值

二、for ... else ... (比較少用到)

for ... else ... 格式:

for  <變量>   in   <循環序列>:
【循環體】
else:
【else的語句塊】

釋:for 遍歷序列,無 break 結束當前循環,循環結束后執行 else 語句塊

示例1:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
else:
print('循環完整結束后執行')
輸出結果:
woodman
Alan
Bobo
循環完整結束后執行

示例2:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
if name == 'Alan':
break # break 結束循環,for 下的 else 也不會執行
else:
print('循環完整結束后執行')
輸出結果:
woodman
Alan

示例3:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
if name == 'Alan':
continue # continue 跳過本次循環,進入下一次循環
print(name) # 如果被 continue 本條語句不會執行
else:
print('循環完整結束后執行')

輸出結果:

woodman
Bobo
循環完整結束后執行

注意:continue 只是跳過本次循環,循環結束后 else 語句塊最后被執行

三、for 循環嵌套

循環嵌套為循環中嵌套另外一層循環。

for <外層循環變量> in <外層循環序列>:
for <內層循環變量> in <內層循環序列>:
【內層循環體】
【外層循環體】

這個只是一個for 與 for 的循環嵌套,你可以使用 for 與 while 嵌套。

循環嵌套經典示例1:倒三角的九九乘法表

# 九九乘法表 倒三角,你可以試試輸出正三角
for i in range(1, 10): # range()請看本章第五部分
for j in range(i, 10):
print('%d * %d = %d' % (i, j, i * j), end='\t')
print('') # 控制換行

循環嵌套經典示例2:冒泡排序

# 冒泡排序
list = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]
length = len(list)
for i in range(length):
for j in range(length - i):
if list[length - j - 1] < list[length - j - 2]:
list[length - j - 1], list[length - j - 2] = list[length - j - 2], list[length - j - 1]
print(list)

四、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]
>>> it = iter(list) # 創建迭代對象
>>> print (next(it)) # 訪問當前指針元素,結束后指針向下移一步
0
>>> print (next(it)) #
1
>>>

 

2、for循環訪問迭代器

示例:

list = ['woodman', 'Alan', 'Bobo']
it = iter(list) # 創建迭代器對象
for name in it: # 循環訪問迭代器
print(name)

注意:迭代器訪問數據比通過索引循環訪問速度更快,數據量大時一般會使用迭代器

五、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):
print(i, end='-')
輸出:0-1-2-3-4-

示例2 :

for i in range(1,5):
print(i, end='-')
輸出:1-2-3-4-

示例3:

for i in range(1,5,2):
print(i, end='-')
輸出:1-3-

示例4:

for i in range(-1,-5,-2):
print(i)
輸出結果
-1
-3

注意:start, stop, step 三個參數可以為負數

示例5:

# 結合range()和len()函數以遍歷一個序列的索引,如下所示.
list = ['woodman', 'Alan', 'Bobo']
for i in range(len(list)):
print(i,list[i])
輸出結果:
0 woodman
1 Alan
2 Bobo

注意:for 循環可作用的迭代對象遠不止 list,tuple,str,unicode,dict 等,任何可迭代對象都可以作用於 for 循環,而內部如何迭代我們通常並不用關心。

通常可迭代對象一般具備 iter() 和 next() 方法或者 __iter__() 和 __next()__ 方法。

有相同愛好的可以進來一起討論哦:企鵝群號:1046795523

學習視頻資料:http://www.makeru.com.cn/live/1392_1164.html?s=143793


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM