Python中實(shí)現(xiàn)循環(huán)遍歷的完全指南
概述
循環(huán)是編程中最核心的概念之一,它允許我們重復(fù)執(zhí)行代碼塊。Python提供了兩種主要的循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)。掌握循環(huán)的使用對于解決各種編程問題至關(guān)重要。
for 循環(huán)
基本語法
for 變量 in 序列:
# 循環(huán)體
pass
基本使用示例
1. 遍歷數(shù)字范圍
# 遍歷 0 到 4
for i in range(5):
print(i)
# 輸出: 0, 1, 2, 3, 4
# 遍歷 1 到 5
for i in range(1, 6):
print(i)
# 輸出: 1, 2, 3, 4, 5
# 步長為2的遍歷
for i in range(0, 10, 2):
print(i)
# 輸出: 0, 2, 4, 6, 8
2. 計算累加和
# 初始化變量
a = 0
# 循環(huán)計算并打印結(jié)果
for i in range(101): # 0到100
a += i
print(f"求和a的值為:{a}")
# 輸出: 求和a的值為:5050
多種求和方法對比
# 方法一:使用for循環(huán)累加
def sum_method1(n):
total = 0
for i in range(1, n + 1):
total += i
return total
# 方法二:等差數(shù)列公式(最高效)
def sum_method2(n):
return n * (1 + n) // 2 # 使用整數(shù)除法
# 方法三:使用sum()和range()
def sum_method3(n):
return sum(range(1, n + 1))
# 測試三種方法
n = 100
print(f"1到{n}的和為:{sum_method1(n)}") # 輸出: 1到100的和為:5050
print(f"1到{n}的和為:{sum_method2(n)}") # 輸出: 1到100的和為:5050
print(f"1到{n}的和為:{sum_method3(n)}") # 輸出: 1到100的和為:5050
while 循環(huán)
基本語法
while 條件:
# 循環(huán)體
pass
基本使用示例
# 初始化變量
total_sum = 0
count = 0
upper_limit = 100 # 設(shè)置上限值,便于維護(hù)
# while 循環(huán)計算 1 到 100 的和
while count < upper_limit:
count += 1
total_sum += count
# 打印最終結(jié)果
print(f"1到{upper_limit}的和為:{total_sum}")
# 輸出: 1到100的和為:5050
while循環(huán)的實(shí)際應(yīng)用
# 用戶輸入驗(yàn)證
def get_valid_number():
while True:
try:
user_input = input("請輸入一個正整數(shù): ")
number = int(user_input)
if number > 0:
return number
else:
print("請輸入正整數(shù)!")
except ValueError:
print("請輸入有效的數(shù)字!")
# 密碼驗(yàn)證系統(tǒng)
def password_check():
max_attempts = 3
attempts = 0
correct_password = "123456"
while attempts < max_attempts:
password = input("請輸入密碼: ")
if password == correct_password:
print("密碼正確!")
return True
else:
attempts += 1
remaining = max_attempts - attempts
if remaining > 0:
print(f"密碼錯誤!還有{remaining}次機(jī)會")
else:
print("密碼錯誤次數(shù)過多,程序退出")
return False
range() 函數(shù)詳解
基本用法
# range(stop) - 從0到stop-1 print(list(range(5))) # [0, 1, 2, 3, 4] # range(start, stop) - 從start到stop-1 print(list(range(2, 8))) # [2, 3, 4, 5, 6, 7] # range(start, stop, step) - 步長為step print(list(range(0, 10, 2))) # [0, 2, 4, 6, 8] print(list(range(10, 0, -1))) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
實(shí)用技巧
# 反向遍歷
for i in range(10, 0, -1):
print(i, end=" ")
print() # 輸出: 10 9 8 7 6 5 4 3 2 1
# 隔行處理
numbers = list(range(1, 21))
for i in range(0, len(numbers), 2):
print(f"第{i}個元素: {numbers[i]}")
# 創(chuàng)建等差數(shù)列
arithmetic_sequence = list(range(5, 50, 5))
print(f"等差數(shù)列: {arithmetic_sequence}")
# 輸出: 等差數(shù)列: [5, 10, 15, 20, 25, 30, 35, 40, 45]
循環(huán)控制語句
break 語句
# 提前退出循環(huán)
for i in range(10):
if i == 5:
break
print(i, end=" ")
print() # 輸出: 0 1 2 3 4
# 在while循環(huán)中使用break
count = 0
while True:
count += 1
if count > 5:
break
print(count, end=" ")
print() # 輸出: 1 2 3 4 5
continue 語句
# 跳過當(dāng)前迭代
for i in range(10):
if i % 2 == 0: # 跳過偶數(shù)
continue
print(i, end=" ")
print() # 輸出: 1 3 5 7 9
# 打印奇數(shù)的另一種方法
for i in range(1, 11):
if i % 2 != 0:
print(i, end=" ")
print() # 輸出: 1 3 5 7 9
else 子句
# for循環(huán)的else(正常結(jié)束時執(zhí)行)
for i in range(5):
print(i)
else:
print("循環(huán)正常結(jié)束")
# while循環(huán)的else
count = 0
while count < 3:
print(count)
count += 1
else:
print("while循環(huán)正常結(jié)束")
# break會跳過else
for i in range(5):
if i == 3:
break
print(i)
else:
print("這行不會執(zhí)行") # 不會執(zhí)行
循環(huán)遍歷不同數(shù)據(jù)結(jié)構(gòu)
1. 遍歷列表
# 基本列表遍歷
fruits = ["蘋果", "香蕉", "橙子", "葡萄"]
for fruit in fruits:
print(fruit)
# 帶索引的遍歷
for index, fruit in enumerate(fruits):
print(f"索引{index}: {fruit}")
# 反向遍歷
for fruit in reversed(fruits):
print(fruit)
# 列表切片遍歷
numbers = list(range(10))
for num in numbers[2:8]: # 遍歷索引2到7的元素
print(num)
2. 遍歷元組
# 基本元組遍歷
coordinates = (10, 20, 30)
for coord in coordinates:
print(coord)
# 元組解包遍歷
points = [(1, 2), (3, 4), (5, 6)]
for x, y in points:
print(f"x={x}, y={y}")
3. 遍歷字典
# 遍歷字典的鍵
student = {"姓名": "張三", "年齡": 20, "成績": 85}
for key in student:
print(f"{key}: {student[key]}")
# 遍歷鍵值對
for key, value in student.items():
print(f"{key} = {value}")
# 遍歷值
for value in student.values():
print(value)
# 遍歷鍵
for key in student.keys():
print(key)
4. 遍歷集合
# 集合遍歷(無序)
unique_numbers = {1, 2, 3, 4, 5}
for num in unique_numbers:
print(num)
# 集合排序后遍歷
for num in sorted(unique_numbers):
print(num)
5. 遍歷字符串
# 字符串遍歷
text = "Hello"
for char in text:
print(char)
# 帶索引遍歷字符串
for index, char in enumerate(text):
print(f"位置{index}: '{char}'")
# 反向遍歷字符串
for char in reversed(text):
print(char, end="")
print() # 輸出: olleH
嵌套循環(huán)
基本嵌套循環(huán)
# 打印乘法表
print("=== 九九乘法表 ===")
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 換行
# 矩陣遍歷
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print("\n=== 矩陣遍歷 ===")
for row in matrix:
for element in row:
print(element, end=" ")
print()
嵌套循環(huán)的實(shí)際應(yīng)用
# 尋找質(zhì)數(shù)
def find_primes(limit):
primes = []
for num in range(2, limit + 1):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
# 找出1到50的所有質(zhì)數(shù)
prime_numbers = find_primes(50)
print(f"1到50的質(zhì)數(shù): {prime_numbers}")
# 圖案打印
def print_pattern(rows):
print("\n=== 星號圖案 ===")
for i in range(1, rows + 1):
# 打印空格
for j in range(rows - i):
print(" ", end="")
# 打印星號
for k in range(2 * i - 1):
print("*", end="")
print()
print_pattern(5)
列表推導(dǎo)式
基本語法
# [表達(dá)式 for 變量 in 序列] # [表達(dá)式 for 變量 in 序列 if 條件]
實(shí)用示例
# 創(chuàng)建平方數(shù)列表
squares = [x**2 for x in range(1, 11)]
print(f"平方數(shù): {squares}")
# 輸出: 平方數(shù): [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 篩選偶數(shù)
numbers = list(range(1, 21))
even_numbers = [x for x in numbers if x % 2 == 0]
print(f"偶數(shù): {even_numbers}")
# 輸出: 偶數(shù): [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 條件表達(dá)式
processed = [x if x % 2 == 0 else -x for x in range(1, 11)]
print(f"處理后的數(shù): {processed}")
# 輸出: 處理后的數(shù): [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
# 嵌套列表推導(dǎo)式
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print(f"乘法矩陣: {matrix}")
# 輸出: 乘法矩陣: [[1, 2, 3], [2, 4, 6], [3, 6, 9]]
# 字符串處理
words = ["hello", "world", "python"]
uppercase_words = [word.upper() for word in words]
word_lengths = [len(word) for word in words]
print(f"大寫: {uppercase_words}")
print(f"長度: {word_lengths}")
實(shí)用示例
1. 數(shù)學(xué)計算類
# 計算階乘
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
# 計算斐波那契數(shù)列
def fibonacci(n):
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[i-1] + fib_sequence[i-2])
return fib_sequence[:n]
# 測試
print(f"5的階乘: {factorial(5)}") # 輸出: 5的階乘: 120
print(f"前10項斐波那契數(shù): {fibonacci(10)}")
# 輸出: 前10項斐波那契數(shù): [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
2. 數(shù)據(jù)處理類
# 學(xué)生成績統(tǒng)計
def analyze_grades(grades):
total = 0
count = 0
max_grade = float('-inf')
min_grade = float('inf')
for grade in grades:
total += grade
count += 1
if grade > max_grade:
max_grade = grade
if grade < min_grade:
min_grade = grade
average = total / count if count > 0 else 0
return {
'總分': total,
'平均分': round(average, 2),
'最高分': max_grade,
'最低分': min_grade,
'人數(shù)': count
}
# 測試數(shù)據(jù)
student_grades = [85, 92, 78, 96, 88, 73, 91, 84]
result = analyze_grades(student_grades)
for key, value in result.items():
print(f"{key}: {value}")
3. 搜索和過濾類
# 在列表中搜索元素
def search_element(lst, target):
for index, element in enumerate(lst):
if element == target:
return index
return -1 # 未找到
# 過濾滿足條件的元素
def filter_elements(lst, condition_func):
result = []
for element in lst:
if condition_func(element):
result.append(element)
return result
# 測試
numbers = [1, 5, 8, 12, 15, 23, 8, 30]
print(f"數(shù)字8的位置: {search_element(numbers, 8)}") # 輸出: 數(shù)字8的位置: 2
# 過濾大于10的數(shù)
greater_than_10 = filter_elements(numbers, lambda x: x > 10)
print(f"大于10的數(shù): {greater_than_10}") # 輸出: 大于10的數(shù): [12, 15, 23, 30]
4. 游戲相關(guān)
# 猜數(shù)字游戲
import random
def guess_number_game():
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
print("=== 猜數(shù)字游戲 ===")
print("我想了一個1到100之間的數(shù)字,你有7次機(jī)會猜中它!")
while attempts < max_attempts:
try:
guess = int(input(f"第{attempts + 1}次猜測: "))
attempts += 1
if guess == secret_number:
print(f"恭喜你!用了{(lán)attempts}次就猜中了!")
return
elif guess < secret_number:
print("太小了!")
else:
print("太大了!")
remaining = max_attempts - attempts
if remaining > 0:
print(f"還有{remaining}次機(jī)會")
except ValueError:
print("請輸入有效的數(shù)字!")
print(f"游戲結(jié)束!正確答案是{secret_number}")
# 使用示例(取消注釋運(yùn)行)
# guess_number_game()
性能優(yōu)化建議
1. 選擇合適的循環(huán)方式
import time
# 性能測試函數(shù)
def performance_test():
n = 1000000
# 方法1: for循環(huán)
start_time = time.time()
total1 = 0
for i in range(n):
total1 += i
time1 = time.time() - start_time
# 方法2: 數(shù)學(xué)公式(最快)
start_time = time.time()
total2 = n * (n - 1) // 2
time2 = time.time() - start_time
# 方法3: sum函數(shù)
start_time = time.time()
total3 = sum(range(n))
time3 = time.time() - start_time
print(f"for循環(huán)耗時: {time1:.4f}秒")
print(f"數(shù)學(xué)公式耗時: {time2:.4f}秒")
print(f"sum函數(shù)耗時: {time3:.4f}秒")
# performance_test() # 取消注釋運(yùn)行性能測試
2. 避免不必要的循環(huán)
# ? 不好的做法
numbers = list(range(1000))
result = []
for num in numbers:
if num % 2 == 0:
result.append(num * 2)
# ? 更好的做法(使用列表推導(dǎo)式)
result = [num * 2 for num in numbers if num % 2 == 0]
# ? 最佳做法(如果只是檢查存在性)
def has_even_square(numbers):
# 使用any()避免完整遍歷
return any(num % 2 == 0 for num in numbers)
3. 循環(huán)優(yōu)化技巧
# 緩存循環(huán)條件
items = list(range(10000))
length = len(items) # 緩存長度
# ? 每次都調(diào)用len()
for i in range(len(items)):
pass
# ? 使用緩存的長度
for i in range(length):
pass
# 減少循環(huán)內(nèi)的計算
expensive_calc = lambda x: x ** 2 + x * 3 + 1
# ? 在循環(huán)內(nèi)重復(fù)計算
results = []
for i in range(1000):
results.append(expensive_calc(i))
# ? 預(yù)計算或使用緩存
cache = {}
results = []
for i in range(1000):
if i not in cache:
cache[i] = expensive_calc(i)
results.append(cache[i])
學(xué)習(xí)建議
- 從簡單開始 - 先掌握基本的for和while循環(huán)
- 多練習(xí) - 通過實(shí)際例子加深理解
- 理解差異 - 明白for和while的適用場景
- 注意效率 - 學(xué)會選擇最優(yōu)的循環(huán)方式
- 善用工具 - 學(xué)會使用enumerate、zip等輔助函數(shù)
常見錯誤提醒
# ? 無限循環(huán)
# while True:
# print("這會一直運(yùn)行下去")
# ? 正確的無限循環(huán)(有退出條件)
count = 0
while True:
count += 1
if count > 5:
break
print(count)
# ? 修改正在遍歷的列表
# lst = [1, 2, 3, 4, 5]
# for item in lst:
# if item % 2 == 0:
# lst.remove(item) # 可能導(dǎo)致意外行為
# ? 正確做法:創(chuàng)建新列表
lst = [1, 2, 3, 4, 5]
new_lst = [item for item in lst if item % 2 != 0]
print(new_lst) # [1, 3, 5]
本文檔基于你的實(shí)際代碼整理而成,包含了完整的語法說明和實(shí)用示例
以上就是Python中實(shí)現(xiàn)循環(huán)遍歷的完全指南的詳細(xì)內(nèi)容,更多關(guān)于Python循環(huán)遍歷的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺析Python中g(shù)lobal和nonlocal關(guān)鍵字的妙用
這篇文章主要來和大家一起深入探討Python中關(guān)鍵詞global和nonlocal的用法,包括詳細(xì)的示例代碼和實(shí)際應(yīng)用場景,感興趣的可以了解下2024-04-04
python實(shí)現(xiàn)爬蟲統(tǒng)計學(xué)校BBS男女比例(一)
這篇文章主要介紹了python實(shí)現(xiàn)爬蟲統(tǒng)計學(xué)校BBS男女比例,,需要的朋友可以參考下2015-12-12
基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制
這篇文章主要介紹了基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制,本文為?HITwh?網(wǎng)絡(luò)空間安全專業(yè)網(wǎng)絡(luò)空間安全設(shè)計與實(shí)踐選題,主要實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控局域網(wǎng)內(nèi)的主機(jī)桌面與網(wǎng)絡(luò)情況、簡單鍵鼠控制、遠(yuǎn)程斷網(wǎng)(ARP?攻擊)、數(shù)據(jù)加密傳輸?shù)裙δ?,下面來看看具體實(shí)現(xiàn)過程吧2022-01-01
pytorch中的自定義反向傳播,求導(dǎo)實(shí)例
今天小編就為大家分享一篇pytorch中的自定義反向傳播,求導(dǎo)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

