for循環可以遍歷任何序列的元素,如逐個輸出字符串、列表、字典或元組等中的元素。它是一種迭代循環機制。通俗點說,就是把這個循環中的第一個元素到最後一個元素依次訪問一次,並把訪問到的元素供執行語句使用。
10.1 for語句
for循環從序列裡逐個取出元素,並賦值給迭代變量,以供執行語句使用,語法結構為:
for 迭代變量in 遍歷序列:
執行語句1
執行語句…
# 遍歷字符串
s = "Welcome to Python."
for c in s:
print(c)
10.2 range()函數
可以使用內置range()函數,生成數列,並通過for循環取出元素。range(start,end,step=1)顧頭不顧尾。
range(5): 默認step=1,start=0,生成數列內容為:[0, 1, 2, 3, 4];
range(1,5):指定start=1,end=5,默認step=1,生成數列內容為:[1, 2, 3, 4]
range(1,5,2):指定start=1,end=5,step=2,生成數列內容為: [1, 3]
# 用range()函數生成數列
for i in range(10):
print(i)
10.3 索引迭代
除了可通過遍歷的方式獲取元素外,還可以通過索引迭代的方式獲取。用索引迭代時,先通過內置函數len()獲取列表的長度,再逐個迭代。
# 數組內容
lang = ["Chinese", "English", "French"]
# 獲取數組長度
length = len(lang)
for index in range(length):
print(lang[index])
10.4 嵌套語句
for循環允許在一個循環體裡面嵌入另一個循環。語法結構為:
for 迭代變量1 in 遍歷序列1:
執行語句1
for 迭代變量3 in 遍歷序列2:
執行語句2
執行語句…
# 字符串數組
s1 = ["1", "2", "3", "4", "5"]
s2 = ['a', 'b', 'c', 'd', 'e']
for a in s1:
print(a)
for b in s2:
print(b)
10.5 列表推導
Python中的for循環,除了可以遍曆元素外,還可以進行列表推導。列表推導是一種簡化代碼的優美方法。推導式是可以從一個數據序列構建另一個新的數據序列的結構體。語法結構為:
[表達式 for 變量 in 列表] 或者 [表達式 for 變量 in 列表 if 條件]
# 獲取新列表
l1 = [data for data in range(1, 10)]
print(l1)
# 兩個列表內容
v1 = [10, 20, 30]
v2 = [30, 40, 50]
# 獲取交集
v = [num for num in v1 if num in v2]
print(v)
# 獲取差集
v = [num for num in v1 if num not in v2]
print(v)
10.6 跳出循環
Python語言的跳出循環與大多數語言一樣,可以使用關鍵字continue跳出本次循環。
# continue語句
def f1():
for i in range(1, 10):
if i % 2 == 0:
continue
# if條件為True的,跳過continue語句下的表達式。
print(i)
f1()
或者break跳出整個for循環。
# break語句
def f1():
for i in range(1, 10):
if i % 2 == 0:
break
# if條件為True的,跳過continue語句下的表達式。
print(i)
f1()
另外還有return語法,會跳出for循環。
# return語句
def f1():
for i in range(1, 10):
if i % 2 == 0:
return i
return 0
result = f1()
print(result)
10.7 for-else語句
如果想在循環正常(非break 跳出)執行完,需要執行一些其他動作時,可在後面添加else語句。除了else外,還有一種特殊情況,就是會出現一個語句體什麼也不做的情況,這時用pass語句進行佔位。它是空語句,什麼都不做,只要是保持程序結構的完整性。
正常退出循環,會執行else內容。
# range()生成數列
for i in range(1, 10):
if i % 2 == 0:
pass # pass不做任何操作
print(i)
else:
print("循環完成")
通過break非正常退出循環,不會執行else內容。
# range()生成數列
for i in range(1, 10):
if i % 2 == 0:
break
print(i)
else:
print("這裡不執行")