Python中实现循环遍历的完全指南

 更新时间:2026年02月02日 08:49:49   作者:xq9527  
循环是编程中最核心的概念之一,它允许我们重复执行代码块,Python提供了两种主要的循环结构,即for循环和while循环,下面小编就和大家详细介绍一下吧

概述

循环是编程中最核心的概念之一,它允许我们重复执行代码块。Python提供了两种主要的循环结构:for循环和while循环。掌握循环的使用对于解决各种编程问题至关重要。

for 循环

基本语法

for 变量 in 序列:
    # 循环体
    pass

基本使用示例

1. 遍历数字范围

# 遍历 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

# 循环计算并打印结果
for i in range(101):  # 0到100
    a += i

print(f"求和a的值为:{a}")
# 输出: 求和a的值为:5050

多种求和方法对比

# 方法一:使用for循环累加
def sum_method1(n):
    total = 0
    for i in range(1, n + 1):
        total += i
    return total

# 方法二:等差数列公式(最高效)
def sum_method2(n):
    return n * (1 + n) // 2  # 使用整数除法

# 方法三:使用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 循环

基本语法

while 条件:
    # 循环体
    pass

基本使用示例

# 初始化变量
total_sum = 0
count = 0
upper_limit = 100  # 设置上限值,便于维护

# while 循环计算 1 到 100 的和
while count < upper_limit:
    count += 1
    total_sum += count

# 打印最终结果
print(f"1到{upper_limit}的和为:{total_sum}")
# 输出: 1到100的和为:5050

while循环的实际应用

# 用户输入验证
def get_valid_number():
    while True:
        try:
            user_input = input("请输入一个正整数: ")
            number = int(user_input)
            if number > 0:
                return number
            else:
                print("请输入正整数!")
        except ValueError:
            print("请输入有效的数字!")

# 密码验证系统
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}次机会")
            else:
                print("密码错误次数过多,程序退出")
    return False

range() 函数详解

基本用法

# 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]

实用技巧

# 反向遍历
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]}")

# 创建等差数列
arithmetic_sequence = list(range(5, 50, 5))
print(f"等差数列: {arithmetic_sequence}")
# 输出: 等差数列: [5, 10, 15, 20, 25, 30, 35, 40, 45]

循环控制语句

break 语句

# 提前退出循环
for i in range(10):
    if i == 5:
        break
    print(i, end=" ")
print()  # 输出: 0 1 2 3 4

# 在while循环中使用break
count = 0
while True:
    count += 1
    if count > 5:
        break
    print(count, end=" ")
print()  # 输出: 1 2 3 4 5

continue 语句

# 跳过当前迭代
for i in range(10):
    if i % 2 == 0:  # 跳过偶数
        continue
    print(i, end=" ")
print()  # 输出: 1 3 5 7 9

# 打印奇数的另一种方法
for i in range(1, 11):
    if i % 2 != 0:
        print(i, end=" ")
print()  # 输出: 1 3 5 7 9

else 子句

# for循环的else(正常结束时执行)
for i in range(5):
    print(i)
else:
    print("循环正常结束")

# while循环的else
count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("while循环正常结束")

# break会跳过else
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("这行不会执行")  # 不会执行

循环遍历不同数据结构

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

嵌套循环

基本嵌套循环

# 打印乘法表
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()

嵌套循环的实际应用

# 寻找质数
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的所有质数
prime_numbers = find_primes(50)
print(f"1到50的质数: {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)

列表推导式

基本语法

# [表达式 for 变量 in 序列]
# [表达式 for 变量 in 序列 if 条件]

实用示例

# 创建平方数列表
squares = [x**2 for x in range(1, 11)]
print(f"平方数: {squares}")
# 输出: 平方数: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 筛选偶数
numbers = list(range(1, 21))
even_numbers = [x for x in numbers if x % 2 == 0]
print(f"偶数: {even_numbers}")
# 输出: 偶数: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# 条件表达式
processed = [x if x % 2 == 0 else -x for x in range(1, 11)]
print(f"处理后的数: {processed}")
# 输出: 处理后的数: [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

# 嵌套列表推导式
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}")

实用示例

1. 数学计算类

# 计算阶乘
def factorial(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result

# 计算斐波那契数列
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项斐波那契数: {fibonacci(10)}")
# 输出: 前10项斐波那契数: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

2. 数据处理类

# 学生成绩统计
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,
        '人数': count
    }

# 测试数据
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"数字8的位置: {search_element(numbers, 8)}")  # 输出: 数字8的位置: 2

# 过滤大于10的数
greater_than_10 = filter_elements(numbers, lambda x: x > 10)
print(f"大于10的数: {greater_than_10}")  # 输出: 大于10的数: [12, 15, 23, 30]

4. 游戏相关

# 猜数字游戏
import random

def guess_number_game():
    secret_number = random.randint(1, 100)
    attempts = 0
    max_attempts = 7
    
    print("=== 猜数字游戏 ===")
    print("我想了一个1到100之间的数字,你有7次机会猜中它!")
    
    while attempts < max_attempts:
        try:
            guess = int(input(f"第{attempts + 1}次猜测: "))
            attempts += 1
            
            if guess == secret_number:
                print(f"恭喜你!用了{attempts}次就猜中了!")
                return
            elif guess < secret_number:
                print("太小了!")
            else:
                print("太大了!")
                
            remaining = max_attempts - attempts
            if remaining > 0:
                print(f"还有{remaining}次机会")
                
        except ValueError:
            print("请输入有效的数字!")
    
    print(f"游戏结束!正确答案是{secret_number}")

# 使用示例(取消注释运行)
# guess_number_game()

性能优化建议

1. 选择合适的循环方式

import time

# 性能测试函数
def performance_test():
    n = 1000000
    
    # 方法1: for循环
    start_time = time.time()
    total1 = 0
    for i in range(n):
        total1 += i
    time1 = time.time() - start_time
    
    # 方法2: 数学公式(最快)
    start_time = time.time()
    total2 = n * (n - 1) // 2
    time2 = time.time() - start_time
    
    # 方法3: sum函数
    start_time = time.time()
    total3 = sum(range(n))
    time3 = time.time() - start_time
    
    print(f"for循环耗时: {time1:.4f}秒")
    print(f"数学公式耗时: {time2:.4f}秒")
    print(f"sum函数耗时: {time3:.4f}秒")

# performance_test()  # 取消注释运行性能测试

2. 避免不必要的循环

# ❌ 不好的做法
numbers = list(range(1000))
result = []
for num in numbers:
    if num % 2 == 0:
        result.append(num * 2)

# ✅ 更好的做法(使用列表推导式)
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. 循环优化技巧

# 缓存循环条件
items = list(range(10000))
length = len(items)  # 缓存长度

# ❌ 每次都调用len()
for i in range(len(items)):
    pass

# ✅ 使用缓存的长度
for i in range(length):
    pass

# 减少循环内的计算
expensive_calc = lambda x: x ** 2 + x * 3 + 1

# ❌ 在循环内重复计算
results = []
for i in range(1000):
    results.append(expensive_calc(i))

# ✅ 预计算或使用缓存
cache = {}
results = []
for i in range(1000):
    if i not in cache:
        cache[i] = expensive_calc(i)
    results.append(cache[i])

学习建议

  • 从简单开始 - 先掌握基本的for和while循环
  • 多练习 - 通过实际例子加深理解
  • 理解差异 - 明白for和while的适用场景
  • 注意效率 - 学会选择最优的循环方式
  • 善用工具 - 学会使用enumerate、zip等辅助函数

常见错误提醒

# ❌ 无限循环
# while True:
#     print("这会一直运行下去")

# ✅ 正确的无限循环(有退出条件)
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)  # 可能导致意外行为

# ✅ 正确做法:创建新列表
lst = [1, 2, 3, 4, 5]
new_lst = [item for item in lst if item % 2 != 0]
print(new_lst)  # [1, 3, 5]

本文档基于你的实际代码整理而成,包含了完整的语法说明和实用示例

以上就是Python中实现循环遍历的完全指南的详细内容,更多关于Python循环遍历的资料请关注脚本之家其它相关文章!

相关文章

  • 浅析Python中global和nonlocal关键字的妙用

    浅析Python中global和nonlocal关键字的妙用

    这篇文章主要来和大家一起深入探讨Python中关键词global和nonlocal的用法,包括详细的示例代码和实际应用场景,感兴趣的可以了解下
    2024-04-04
  • numpy求平均值的维度设定的例子

    numpy求平均值的维度设定的例子

    今天小编就为大家分享一篇numpy求平均值的维度设定的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 一篇文章带你搞懂Python类的相关知识

    一篇文章带你搞懂Python类的相关知识

    今天我们要说的是面向对象的核心-----类,类能帮我们把复杂的事情变得有条理,有顺序,希望大家通过学习类能改善自己的编码风格,使代码变得更为好看,更加通俗易懂,需要的朋友可以参考下
    2021-05-05
  • python实现爬虫统计学校BBS男女比例(一)

    python实现爬虫统计学校BBS男女比例(一)

    这篇文章主要介绍了python实现爬虫统计学校BBS男女比例,,需要的朋友可以参考下
    2015-12-12
  • 详解分布式任务队列Celery使用说明

    详解分布式任务队列Celery使用说明

    这篇文章主要介绍了详解分布式任务队列Celery使用说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python如何爬取个性签名

    python如何爬取个性签名

    这篇文章主要为大家详细介绍了pythonx抓取个性签名的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Django中的forms组件实例详解

    Django中的forms组件实例详解

    这篇文章主要介绍了Django的forms组件,本文通过实例代码介绍了Django的forms组件,需要的朋友可以参考下
    2018-11-11
  • python用装饰器自动注册Tornado路由详解

    python用装饰器自动注册Tornado路由详解

    这篇文章主要给大家介绍了python用装饰器自动注册Tornado路由,文中给出了三个版本的解决方法,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 基于Python实现主机远程控制

    基于Python实现主机远程控制

    这篇文章主要介绍了基于Python实现主机远程控制,本文为 HITwh 网络空间安全专业网络空间安全设计与实践选题,主要实现了远程监控局域网内的主机桌面与网络情况、简单键鼠控制、远程断网(ARP 攻击)、数据加密传输等功能,下面来看看具体实现过程吧
    2022-01-01
  • pytorch中的自定义反向传播,求导实例

    pytorch中的自定义反向传播,求导实例

    今天小编就为大家分享一篇pytorch中的自定义反向传播,求导实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01

最新评论