在編程中,循環是一種非常常見的控制結構。很多時候,我們需要重復做一些事情,比如遍歷列表、處理數據、嘗試直到成功等。這時候,就離不開循環了。Python 提供了兩種主要的循環結構:for
循環 和 while
循環。本篇文章會從基礎到進階,帶你全面掌握 Python 中的循環。
參考文章:Python 循環 | 簡單一點學習 easyeasy.me
目錄
- 什么是循環?
- for 循環基礎用法
- while 循環基礎用法
- 循環控制語句:break、continue、else
- 循環中的 range() 函數
- 遍歷常見數據結構(列表、字典、集合、字符串)
- 嵌套循環
- 列表推導式中的循環
- 循環的常見坑和優化建議
1. 什么是循環?
循環就是讓程序“重復做某件事”。比如:
print("Hello")
print("Hello")
print("Hello")
你可以用循環來寫得更簡單:
for i in range(3):print("Hello")
這樣是不是清爽多了?
2. for 循環基礎用法
for
循環常用于“遍歷”一些東西,比如列表、字符串、字典等。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)
輸出:
apple
banana
cherry
變量名自定義
你不一定要用 fruit
,變量名可以是你喜歡的,比如:
for x in fruits:print(x)
3. while 循環基礎用法
while
循環的意思是:“只要這個條件成立,就一直重復執行”。
count = 0
while count < 5:print("count:", count)count += 1
注意:while
循環容易寫成死循環,一定要注意循環條件會終止!
4. 循環控制語句:break、continue、else
break:提前跳出循環
for i in range(10):if i == 5:breakprint(i)
輸出:
0
1
2
3
4
continue:跳過這次,繼續下一次循環
for i in range(5):if i == 2:continueprint(i)
輸出:
0
1
3
4
else:循環正常結束后才執行
for i in range(3):print(i)
else:print("循環結束了")
5. 循環中的 range() 函數
range()
是一個生成數字序列的函數,經常和 for
搭配用。
for i in range(5):print(i)
輸出:
0
1
2
3
4
range 的幾種寫法:
range(stop) # 從 0 到 stop-1
range(start, stop) # 從 start 到 stop-1
range(start, stop, step)# 每次加 step,直到 stop 前結束
例如:
for i in range(2, 10, 2):print(i)
輸出:
2
4
6
8
6. 遍歷常見數據結構
列表
names = ["Alice", "Bob", "Charlie"]
for name in names:print(name)
字典
遍歷鍵:
d = {"a": 1, "b": 2}
for key in d:print(key, d[key])
遍歷鍵值對:
for key, value in d.items():print(key, value)
集合
s = {"a", "b", "c"}
for item in s:print(item)
字符串
for ch in "hello":print(ch)
7. 嵌套循環
循環里套循環,用于處理二維數據或復雜結構:
for i in range(3):for j in range(2):print(f"i={i}, j={j}")
輸出:
i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1
8. 列表推導式中的循環
想一行生成列表?看這個:
squares = [x*x for x in range(5)]
print(squares)
輸出:
[0, 1, 4, 9, 16]
加上條件:
evens = [x for x in range(10) if x % 2 == 0]
print(evens)
9. 循環的常見坑和優化建議
常見問題
- 忘了更新變量導致死循環
- 寫錯循環條件
- 不小心修改了遍歷的列表
小技巧
- 用
enumerate()
獲取索引和值 - 用
zip()
同時遍歷多個列表 - 盡量避免嵌套循環太深,影響效率
好的,以下是兩個enumerate()
和兩個zip()
的示例代碼,不帶額外解釋:
enumerate()
示例 1:
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):print(index, fruit)
enumerate()
示例 2:
names = ['Tom', 'Jerry', 'Spike']
for i, name in enumerate(names, start=1):print(f"{i}. {name}")
zip()
示例 1:
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
for name, score in zip(names, scores):print(f"{name}: {score}")
zip()
示例 2:
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = ['x', 'y', 'z']
for a, b, c in zip(list1, list2, list3):print(a, b, c)