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

Written by

in

文章目录
  • 循环是编程中最核心的概念之一,它允许我们重复执行代码块。Python提供了两种主要的循环结构:for循环和while循环。掌握循环的使用对于解决各种编程问题至关重要。
  • 从简单开始 – 先掌握基本的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中重启for循环,使其重新开始遍历 Python实现for循环倒序遍历列表 利用For循环遍历Python字典的三种方法实例 Python 遍历循环详细 聊聊python中的循环遍历 python 双循环遍历list 变量判断代码
  • 目录
    • 概述
    • for 循环
      • 基本语法
      • 基本使用示例
        • 1. 遍历数字范围
        • 2. 计算累加和
      • 多种求和方法对比
      • while 循环
        • 基本语法
          • 基本使用示例
            • while循环的实际应用
            • range() 函数详解
              • 基本用法
                • 实用技巧
                • 循环控制语句
                  • break 语句
                    • continue 语句
                      • else 子句
                      • 循环遍历不同数据结构
                        • 1. 遍历列表
                          • 2. 遍历元组
                            • 3. 遍历字典
                              • 4. 遍历集合
                                • 5. 遍历字符串
                                • 嵌套循环
                                  • 基本嵌套循环
                                    • 嵌套循环的实际应用
                                    • 列表推导式
                                      • 基本语法
                                        • 实用示例
                                        • 实用示例
                                          • 1. 数学计算类
                                            • 2. 数据处理类
                                              • 3. 搜索和过滤类
                                                • 4. 游戏相关
                                                • 性能优化建议
                                                  • 1. 选择合适的循环方式
                                                    • 2. 避免不必要的循环
                                                      • 3. 循环优化技巧
                                                      • 学习建议
                                                        • 常见错误提醒

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

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

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

                                                          # 初始化变量
                                                          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 条件:
                                                              # 循环体
                                                              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
                                                          

                                                          # 用户输入验证
                                                          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(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]
                                                          

                                                          # 提前退出循环
                                                          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
                                                          

                                                          # 跳过当前迭代
                                                          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
                                                          

                                                          # 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("这行不会执行")  # 不会执行
                                                          

                                                          # 基本列表遍历
                                                          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)
                                                          

                                                          # 基本元组遍历
                                                          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}")
                                                          

                                                          # 遍历字典的键
                                                          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)
                                                          

                                                          # 集合遍历(无序)
                                                          unique_numbers = {1, 2, 3, 4, 5}
                                                          for num in unique_numbers:
                                                              print(num)
                                                          
                                                          # 集合排序后遍历
                                                          for num in sorted(unique_numbers):
                                                              print(num)
                                                          

                                                          # 字符串遍历
                                                          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}")
                                                          

                                                          # 计算阶乘
                                                          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]
                                                          

                                                          # 学生成绩统计
                                                          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}")
                                                          

                                                          # 在列表中搜索元素
                                                          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]
                                                          

                                                          # 猜数字游戏
                                                          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()
                                                          

                                                          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()  # 取消注释运行性能测试
                                                          

                                                          # ❌ 不好的做法
                                                          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)
                                                          

                                                          # 缓存循环条件
                                                          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中重启for循环,使其重新开始遍历
                                                          • Python实现for循环倒序遍历列表
                                                          • 利用For循环遍历Python字典的三种方法实例
                                                          • Python 遍历循环详细
                                                          • 聊聊python中的循环遍历
                                                          • python 双循环遍历list 变量判断代码

                                                          站内搜索