最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python for循環(huán)的完整指南(含用例)

 更新時(shí)間:2026年02月25日 09:36:13   作者:破曉之翼  
for 循環(huán)是 Python 中最核心的迭代結(jié)構(gòu),它能夠遍歷任何可迭代對(duì)象,并對(duì)每個(gè)元素執(zhí)行指定的操作,本文將系統(tǒng)講解 for 循環(huán)的基本語(yǔ)法、常用場(chǎng)景,需要的朋友可以參考下

for 循環(huán)是 Python 中最核心的迭代結(jié)構(gòu),它能夠遍歷任何可迭代對(duì)象(如列表、元組、字符串、字典、集合、文件對(duì)象等),并對(duì)每個(gè)元素執(zhí)行指定的操作。與其他語(yǔ)言(如 C 的 for (i=0; i<n; i++))不同,Python 的 for 更接近“foreach”風(fēng)格,專注于遍歷序列或集合中的元素,語(yǔ)法簡(jiǎn)潔且功能強(qiáng)大。

本文將系統(tǒng)講解 for 循環(huán)的基本語(yǔ)法、常用場(chǎng)景,并通過(guò)楊輝三角打印數(shù)獨(dú)求解器兩個(gè)綜合案例,展示 for 循環(huán)在實(shí)際編程中的靈活應(yīng)用。

1. 基本語(yǔ)法與常用場(chǎng)景

1.1 語(yǔ)法結(jié)構(gòu)

for 變量 in 可迭代對(duì)象:
    循環(huán)體
else:                # 可選,當(dāng)循環(huán)正常結(jié)束(沒(méi)有被 break 中斷)時(shí)執(zhí)行
    語(yǔ)句塊
  • 變量:每次迭代從可迭代對(duì)象中取出一個(gè)元素賦值給該變量。
  • 可迭代對(duì)象:包括列表、元組、字符串、字典、集合、range 對(duì)象、文件對(duì)象、生成器等。
  • 循環(huán)體:需要重復(fù)執(zhí)行的代碼塊,注意縮進(jìn)。
  • else 子句:可選,當(dāng)循環(huán)未被 break 終止時(shí)執(zhí)行。

1.2 常用遍歷場(chǎng)景

遍歷列表

fruits = ["蘋(píng)果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜歡吃 {fruit}")
# 輸出:
# 我喜歡吃 蘋(píng)果
# 我喜歡吃 香蕉
# 我喜歡吃 橙子

遍歷元組

coordinates = (10, 20, 30)
for coord in coordinates:
    print(f"坐標(biāo)值: {coord}")

遍歷字符串(字符序列)

message = "Python"
for char in message:
    print(char, end="-")   # 輸出:P-y-t-h-o-n-

遍歷字典

person = {"name": "張三", "age": 30, "city": "北京"}

# 遍歷鍵(默認(rèn))
for key in person:
    print(key)          # 輸出:name age city

# 遍歷值
for value in person.values():
    print(value)        # 輸出:張三 30 北京

# 同時(shí)遍歷鍵和值
for key, value in person.items():
    print(f"{key}: {value}")

使用range()生成數(shù)字序列

# 生成 0 到 4
for i in range(5):
    print(i, end=" ")   # 輸出:0 1 2 3 4

# 生成 2 到 8,步長(zhǎng)為 2
for i in range(2, 9, 2):
    print(i, end=" ")   # 輸出:2 4 6 8

# 使用索引遍歷列表
fruits = ["蘋(píng)果", "香蕉", "橙子"]
for i in range(len(fruits)):
    print(f"索引 {i}: {fruits[i]}")

使用enumerate()同時(shí)獲取索引和元素

fruits = ["蘋(píng)果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
    print(f"索引 {index}: {fruit}")

使用zip()并行遍歷多個(gè)可迭代對(duì)象

names = ["張三", "李四", "王五"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
    print(f"{name} 的分?jǐn)?shù)是 {score}")

循環(huán)控制:break和continue

# 查找第一個(gè)偶數(shù)
numbers = [1, 3, 5, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:
        print(f"找到偶數(shù): {num}")
        break          # 立即退出循環(huán)

# 跳過(guò)偶數(shù),打印奇數(shù)
for num in numbers:
    if num % 2 == 0:
        continue       # 跳過(guò)本次循環(huán)剩余部分
    print(num)

for...else結(jié)構(gòu)

# 檢查列表中是否有偶數(shù)
numbers = [1, 3, 5, 7, 9]
for num in numbers:
    if num % 2 == 0:
        print("發(fā)現(xiàn)偶數(shù)!")
        break
else:
    print("沒(méi)有偶數(shù)。")   # 因?yàn)檠h(huán)未被 break,所以執(zhí)行

列表推導(dǎo)式(簡(jiǎn)潔的for循環(huán))

# 生成 0~9 的平方列表
squares = [x**2 for x in range(10)]
print(squares)   # 輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 帶條件的推導(dǎo)式(只保留偶數(shù))
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 輸出:[0, 4, 16, 36, 64]

遍歷文件對(duì)象

with open("example.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line, end="")   # 逐行打印

2. 案例一:打印楊輝三角(數(shù)字金字塔)

楊輝三角(Pascal’s Triangle)是一個(gè)經(jīng)典的數(shù)學(xué)圖形,每一行由組合數(shù)構(gòu)成,滿足:

  • 第 n 行有 n+1 個(gè)數(shù)字(行號(hào)從 0 開(kāi)始)。
  • 首尾數(shù)字為 1。
  • 內(nèi)部數(shù)字等于上一行相鄰兩數(shù)之和:triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]。

2.1 使用組合數(shù)公式(math.comb)

import math

def print_pascal_comb(n):
    """打印 n 行的楊輝三角,使用組合數(shù)公式"""
    for row in range(n):
        # 打印前導(dǎo)空格,使三角形居中
        print(" " * (n - row - 1) * 3, end="")  # 每個(gè)數(shù)字占3位,乘3對(duì)齊
        for col in range(row + 1):
            num = math.comb(row, col)
            print(f"{num:3}", end=" ")
        print()

print_pascal_comb(6)

輸出:

               1 
             1   1 
           1   2   1 
         1   3   3   1 
       1   4   6   4   1 
     1   5  10  10   5   1 

for 循環(huán)點(diǎn)睛:

  • 外層 for row 控制行數(shù)。
  • 內(nèi)層 for col 遍歷每一行的元素,用組合數(shù)計(jì)算值。
  • 前導(dǎo)空格數(shù)量隨行數(shù)遞減,實(shí)現(xiàn)居中效果。

2.2 使用迭代生成(遞推關(guān)系)

def print_pascal_iter(rows):
    """打印 rows 行的楊輝三角,使用迭代生成"""
    triangle = []  # 存儲(chǔ)整個(gè)三角形
    for i in range(rows):
        row = [1] * (i + 1)          # 初始化為全1,首尾已正確
        for j in range(1, i):        # 從第2個(gè)到倒數(shù)第2個(gè)
            row[j] = triangle[i-1][j-1] + triangle[i-1][j]
        triangle.append(row)

    # 打印三角形
    max_width = len(str(max(triangle[-1])))  # 最大數(shù)字寬度
    for i, row in enumerate(triangle):
        print(" " * (rows - i - 1) * (max_width + 1), end="")
        for num in row:
            print(f"{num:{max_width}d}", end=" ")
        print()

print_pascal_iter(8)

輸出:

                1 
               1 1 
              1 2 1 
             1 3 3 1 
            1 4 6 4 1 
           1 5 10 10 5 1 
          1 6 15 20 15 6 1 
         1 7 21 35 35 21 7 1 

for 循環(huán)點(diǎn)睛:

  • 外層 for i 逐行構(gòu)建。
  • 內(nèi)層 for j 根據(jù)上一行計(jì)算當(dāng)前行中間值。
  • 打印部分再次使用嵌套 for 控制對(duì)齊。

3. 案例二:數(shù)獨(dú)求解器(回溯算法)

數(shù)獨(dú)是 9×9 的網(wǎng)格,每行、每列和每個(gè) 3×3 宮(共 9 個(gè))必須包含 1-9 各一次。我們將用 for 循環(huán)實(shí)現(xiàn)回溯法求解。

3.1 數(shù)獨(dú)的表示

空白格用 0 表示,示例數(shù)獨(dú):

5 3 . | . 7 . | . . .
6 . . | 1 9 5 | . . .
. 9 8 | . . . | . 6 .
------+-------+------
8 . . | . 6 . | . . 3
4 . . | 8 . 3 | . . 1
7 . . | . 2 . | . . 6
------+-------+------
. 6 . | . . . | 2 8 .
. . . | 4 1 9 | . . 5
. . . | . 8 . | . 7 9

3.2 合法性檢查函數(shù)

def is_valid(board, row, col, num):
    """檢查在 (row, col) 處填入 num 是否合法"""
    # 檢查行
    for j in range(9):
        if board[row][j] == num:
            return False

    # 檢查列
    for i in range(9):
        if board[i][col] == num:
            return False

    # 檢查所在 3x3 宮
    start_row, start_col = 3 * (row // 3), 3 * (col // 3)
    for i in range(start_row, start_row + 3):
        for j in range(start_col, start_col + 3):
            if board[i][j] == num:
                return False

    return True

for 循環(huán)點(diǎn)睛:

  • 三個(gè)獨(dú)立的 for 循環(huán)分別掃描行、列、宮。
  • 宮內(nèi)使用雙重 for 遍歷 3×3 區(qū)域。

3.3 回溯求解函數(shù)

def solve_sudoku(board):
    """使用回溯法求解數(shù)獨(dú)(修改原 board),返回是否找到解"""
    for i in range(9):
        for j in range(9):
            if board[i][j] == 0:          # 找到空白格
                for num in range(1, 10):  # 嘗試 1-9
                    if is_valid(board, i, j, num):
                        board[i][j] = num
                        if solve_sudoku(board):  # 遞歸求解剩余部分
                            return True
                        board[i][j] = 0          # 回溯
                return False               # 無(wú)解,回溯
    return True                             # 無(wú)空白格,求解完成

for 循環(huán)點(diǎn)睛:

  • 雙重 for 遍歷整個(gè)棋盤(pán),定位空白格。
  • 內(nèi)層 for num 枚舉所有候選數(shù)字,依次嘗試。
  • 遞歸調(diào)用自身繼續(xù)求解,利用 for 循環(huán)實(shí)現(xiàn)深度優(yōu)先搜索。

3.4 打印函數(shù)

def print_sudoku(board):
    """美觀打印數(shù)獨(dú)棋盤(pán)"""
    for i in range(9):
        if i % 3 == 0 and i != 0:
            print("-" * 21)               # 每三行打印橫線
        for j in range(9):
            if j % 3 == 0 and j != 0:
                print("|", end=" ")       # 每三列打印豎線
            print(board[i][j] if board[i][j] != 0 else ".", end=" ")
        print()

for 循環(huán)點(diǎn)睛:

  • 外層 for i 控制行,內(nèi)層 for j 控制列。
  • 利用 % 運(yùn)算符在適當(dāng)位置添加分隔符,使棋盤(pán)清晰。

3.5 完整測(cè)試

# 定義數(shù)獨(dú)(同上)
sudoku = [
    [5, 3, 0, 0, 7, 0, 0, 0, 0],
    [6, 0, 0, 1, 9, 5, 0, 0, 0],
    [0, 9, 8, 0, 0, 0, 0, 6, 0],
    [8, 0, 0, 0, 6, 0, 0, 0, 3],
    [4, 0, 0, 8, 0, 3, 0, 0, 1],
    [7, 0, 0, 0, 2, 0, 0, 0, 6],
    [0, 6, 0, 0, 0, 0, 2, 8, 0],
    [0, 0, 0, 4, 1, 9, 0, 0, 5],
    [0, 0, 0, 0, 8, 0, 0, 7, 9]
]

print("原始數(shù)獨(dú):")
print_sudoku(sudoku)

if solve_sudoku(sudoku):
    print("\n解出的數(shù)獨(dú):")
    print_sudoku(sudoku)
else:
    print("無(wú)解")

輸出(節(jié)選):

原始數(shù)獨(dú):
5 3 . | . 7 . | . . . 
6 . . | 1 9 5 | . . . 
. 9 8 | . . . | . 6 . 
------+-------+------
8 . . | . 6 . | . . 3 
4 . . | 8 . 3 | . . 1 
7 . . | . 2 . | . . 6 
------+-------+------
. 6 . | . . . | 2 8 . 
. . . | 4 1 9 | . . 5 
. . . | . 8 . | . 7 9 

解出的數(shù)獨(dú):
5 3 4 | 6 7 8 | 9 1 2 
6 7 2 | 1 9 5 | 3 4 8 
1 9 8 | 3 4 2 | 5 6 7 
------+-------+------
8 5 9 | 7 6 1 | 4 2 3 
4 2 6 | 8 5 3 | 7 9 1 
7 1 3 | 9 2 4 | 8 5 6 
------+-------+------
9 6 1 | 5 3 7 | 2 8 4 
2 8 7 | 4 1 9 | 6 3 5 
3 4 5 | 2 8 6 | 1 7 9 

4. 總結(jié)

通過(guò)上述案例,我們可以看到 for 循環(huán)在 Python 編程中的核心地位:

  • 遍歷數(shù)據(jù):無(wú)論是簡(jiǎn)單的列表、字典,還是復(fù)雜的二維網(wǎng)格,for 循環(huán)都能輕松遍歷。
  • 枚舉嘗試:在數(shù)獨(dú)求解中,for num in range(1,10) 枚舉所有可能數(shù)字,是回溯算法的基石。
  • 模式生成:楊輝三角的每一行都通過(guò) for 循環(huán)遞推構(gòu)建,體現(xiàn)了循環(huán)與數(shù)學(xué)規(guī)律的結(jié)合。
  • 格式化輸出:利用 for 循環(huán)控制打印格式,可以輸出美觀的圖形(如數(shù)獨(dú)棋盤(pán)、楊輝三角)。

掌握 for 循環(huán),是通往 Python 編程高手的重要一步。希望本文的講解和案例能幫助你更深入地理解并靈活運(yùn)用這一強(qiáng)大的工具。

以上就是Python for循環(huán)的完全指南(含用例)的詳細(xì)內(nèi)容,更多關(guān)于Python for循環(huán)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python3實(shí)現(xiàn)SMTP發(fā)送郵件的實(shí)戰(zhàn)指南

    Python3實(shí)現(xiàn)SMTP發(fā)送郵件的實(shí)戰(zhàn)指南

    ,本文詳細(xì)介紹 Python3 借助smtplib和email庫(kù)實(shí)現(xiàn) SMTP 郵件發(fā)送的方法,從基礎(chǔ)到實(shí)戰(zhàn)覆蓋多場(chǎng)景,先講解 SMTP 協(xié)議定義及兩核心庫(kù)功能,再說(shuō)明創(chuàng)建 SMTP 對(duì)象和使用sendmail方法的核心語(yǔ)法與參數(shù),需要的朋友可以參考下
    2025-10-10
  • Python實(shí)現(xiàn)復(fù)雜的事件驅(qū)動(dòng)架構(gòu)

    Python實(shí)現(xiàn)復(fù)雜的事件驅(qū)動(dòng)架構(gòu)

    事件驅(qū)動(dòng)架構(gòu)(Event-Driven?Architecture,?EDA)是一種軟件設(shè)計(jì)模式,它基于事件的產(chǎn)生、傳播和處理進(jìn)行系統(tǒng)的構(gòu)建,下面我們來(lái)看看如何在?Python?中實(shí)現(xiàn)復(fù)雜的事件驅(qū)動(dòng)架構(gòu)吧
    2024-12-12
  • 優(yōu)化Python代碼的實(shí)用技巧分享

    優(yōu)化Python代碼的實(shí)用技巧分享

    有時(shí)候,寫(xiě)代碼就像是一場(chǎng)馬拉松,盡管已經(jīng)盡全力跑了很久,但依然覺(jué)得離目標(biāo)遙不可及,今天就讓我們一起來(lái)探討一下,如何讓Python代碼跑得更快,給它加速,本文將從幾個(gè)實(shí)用的角度出發(fā),帶你了解如何優(yōu)化Python代碼,提升其執(zhí)行效率,需要的朋友可以參考下
    2025-08-08
  • python實(shí)現(xiàn)拼接圖片

    python實(shí)現(xiàn)拼接圖片

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)拼接圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 一文掌握6種Python中常用數(shù)據(jù)庫(kù)操作及代碼

    一文掌握6種Python中常用數(shù)據(jù)庫(kù)操作及代碼

    在數(shù)據(jù)處理和管理領(lǐng)域,Python作為一種高效、易用的編程語(yǔ)言,擁有豐富的數(shù)據(jù)庫(kù)操作模塊,可以輕松實(shí)現(xiàn)對(duì)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)操作,本文將介紹六種常見(jiàn)的Python數(shù)據(jù)庫(kù)操作模塊,需要的可以參考下
    2023-12-12
  • 用django-allauth實(shí)現(xiàn)第三方登錄的示例代碼

    用django-allauth實(shí)現(xiàn)第三方登錄的示例代碼

    這篇文章主要介紹了用django-allauth實(shí)現(xiàn)第三方登錄的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python SQLAlchemy簡(jiǎn)介及基本用法

    Python SQLAlchemy簡(jiǎn)介及基本用法

    SQLAlchemy是一個(gè)基于Python實(shí)現(xiàn)的ORM對(duì)象關(guān)系映射框架,該框架建立在DB API之上,使用關(guān)系對(duì)象映射進(jìn)行數(shù)據(jù)庫(kù)操作,這篇文章主要介紹了SQLAlchemy簡(jiǎn)介以及基本使用,需要的朋友可以參考下
    2023-08-08
  • 一篇文章搞懂Python的文件路徑操作

    一篇文章搞懂Python的文件路徑操作

    這篇文章主要給大家介紹了關(guān)于Python文件路徑操作的相關(guān)資料,在python中我們會(huì)經(jīng)常的對(duì)文件使用路徑,文件路徑通常有兩種,分別為絕對(duì)路徑、相對(duì)路徑,需要的朋友可以參考下
    2023-07-07
  • python?tkinter實(shí)現(xiàn)彈窗的輸入輸出

    python?tkinter實(shí)現(xiàn)彈窗的輸入輸出

    這篇文章主要為大家詳細(xì)介紹了python?tkinter實(shí)現(xiàn)彈窗的輸入輸出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實(shí)現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法詳解

    Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實(shí)現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法詳解

    這篇文章主要介紹了Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實(shí)現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了協(xié)程的功能、原理及gevent、greenlet實(shí)現(xiàn)協(xié)程,以及協(xié)程實(shí)現(xiàn)多任務(wù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

平罗县| 丰顺县| 白城市| 嘉义市| 元氏县| 苍梧县| 五常市| 闽侯县| 庆安县| 筠连县| 安义县| 西青区| 启东市| 浮山县| 图们市| 宁蒗| 彰化市| 朝阳市| 肃宁县| 阳泉市| 顺昌县| 黄平县| 马边| 晋江市| 玛沁县| 轮台县| 台东县| 纳雍县| 柞水县| 越西县| 元谋县| 岳西县| 沈阳市| 祥云县| 额尔古纳市| 贺州市| 万源市| 汽车| 绩溪县| 万盛区| 来安县|