当前位置: 代码网 > it编程>前端脚本>Python > Python中实现循环遍历的完全指南

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

2026年02月02日 Python 我要评论
概述循环是编程中最核心的概念之一,它允许我们重复执行代码块。python提供了两种主要的循环结构:for循环和while循环。掌握循环的使用对于解决各种编程问题至关重要。for 循环基本语法for 变

概述

循环是编程中最核心的概念之一,它允许我们重复执行代码块。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循环遍历的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com