一文掌握 Python 中的循环和迭代工具

摘要:Python 提供了使重复性任务易于管理的工具。其中包括循环和迭代工具。无论您是需要遍历序列、重复检查条件,还是高效处理数据密集型任务,这些工具都能满足您的需求。

Python 提供了使重复性任务易于管理的工具。其中包括循环和迭代工具。无论您是需要遍历序列、重复检查条件,还是高效处理数据密集型任务,这些工具都能满足您的需求。

在 loops_demo.py:

# loops_demo.py# List iterationfruits = ["apple", "banana", "cherry"]for fruit in fruits: print(f"I love {fruit}")

何时使用:
在处理已知集合或范围(如处理项目列表或生成序列)时使用 for 循环。

# loops_demo.py# counting with a while loopcount = 1while count

何时使用:
当迭代次数不固定或取决于运行时条件(如用户输入或动态计算)时,选择 while 循环。

除非明确中断,否则无限循环将永远运行。虽然它不是一个单独的类型,但它是使用 while 循环实现的行为。

# loops_demo.py# Infinite loop with user inputwhile True: user_input = input("Enter 'stop' to end: ").strip.lower if user_input == "stop": print("Loop ended.") break print(f"You entered: {user_input}")

何时使用:
无限循环在事件驱动型程序(如服务器或游戏)中非常有用。始终包含退出条件 (如 break) 以防止意外行为。

break

break 语句提前退出循环。

# loops_demo.py# Exit on specific conditionfor number in range(10): if number == 5: print("Breaking loop at 5") break print(number)

何时使用:
当您想要根据特定条件终止循环时,请使用 break。

continue 语句跳过当前迭代中的其余代码,并移动到下一个迭代。

示例:跳过奇数# loops_demo.py# Skipping odd numbersfor number in range(1, 11): if number % 2 != 0: continue print(f"Even number: {number}")

何时使用:
当您需要绕过某些迭代而不中断循环时,Continue 非常有用。

示例:循环完成# loops_demo.py# Checking loop completionfor number in range(5): if number == 6: breakelse: print("Loop completed without break")

何时使用:
else 块非常适合在循环自然完成时处理 logic。

选择正确的循环For 循环:
在迭代集合、范围或生成器时使用。在大多数情况下,它简洁明了。While 循环:
当终止条件取决于运行时评估时使用。它很灵活,但需要仔细的条件管理以避免无限循环。无限循环:
在构建需要持续执行的系统(如服务器进程)时使用。确保您有可靠的退出条件。

除了循环之外Python 还提供了各种工具和技术来处理重复性任务。这些工具在某些情况下补充甚至取代了传统循环。

列表推导式是一种通过迭代可迭代对象并应用可选条件或转换来创建列表的简洁方法。

示例:数字的平方# loops_demo.py# Generate a list of squaressquares = [x ** 2 for x in range(10)]print(squares)

为什么使用它?
列表推导式比传统的 for 循环更紧凑,并且通常比创建新列表更快。

生成器表达式类似于列表推导式,但使用迭代器一次生成一个值,而不是在内存中创建整个列表。

# loops_demo.py# Calculate sum of squares using a generatorsum_of_squares = sum(x ** 2 for x in range(10))print(sum_of_squares)

为什么使用它?
生成器内存效率高,适用于处理大型数据集或无限序列。

map 函数将指定的函数应用于可迭代对象中的每个项目。

# loops_demo.py# Convert a list of strings to uppercasenames = ["alice", "bob", "charlie"]uppercase_names = map(str.upper, names)print(list(uppercase_names))

为什么使用它?
map 是一种函数式编程工具,它避免了将函数应用于可迭代对象的所有元素的显式循环。

filter 函数从可迭代对象中返回满足给定条件的元素。

示例:筛选偶数# loops_demo.py# Filter out odd numbersnumbers = range(10)even_numbers = filter(lambda x: x % 2 == 0, numbers)print(list(even_numbers))

为什么使用它?
filter 当你需要根据条件提取元素而不编写完整循环时,它很有用。

作为 functools 模块的一部分,reduce 将函数累积应用于可迭代对象的项目,将其缩减为单个值。

# loops_demo.pyfrom functools import reduce# Multiply all numbers in a listnumbers = [1, 2, 3, 4]product = reduce(lambda x, y: x * y, numbers)print(product)

为什么使用它?
reduce 简化了累积操作,例如对值序列求和或相乘。

itertools 模块提供了一组用于创建和操作迭代器的工具,包括无限序列、组合和排列。

# loops_demo.pyfrom itertools import permutations# Generate all permutations of a listitems = [1, 2, 3]all_permutations = list(permutations(items))print(all_permutations)

为什么使用它?
itertools 非常适合复杂的循环需求,例如生成组合、笛卡尔积或迭代无限序列。

与列表推导式类似,这些允许您以简洁的方式创建集合和字典。

# loops_demo.py# Generate a dictionary with numbers as keys and their squares as valuessquares_dict = {x: x ** 2 for x in range(5)}print(squares_dict)

为什么使用它?
它们提供了一种清晰易读的方式来以编程方式创建字典和集合。

递归允许函数调用自身来解决较小子问题中的问题,通常不需要显式循环。

# loops_demo.py# Recursive function to calculate factorialdef factorial(n): if n == 0: return 1 return n * factorial(n - 1)print(factorial(5)) # Output: 120

为什么使用它?
递归非常适合于可分解为更小的重复任务的问题,例如树遍历或解决数学问题。

# loops_demo.pynumbers = [1, 2, 3, 4, 5]total = sum(numbers)print(total)

为什么使用它?
这些函数是循环的高效且简洁的替代方案。

# loops_demo.pyimport asyncioasync def say_hello(name): await asyncio.sleep(1) print(f"Hello, {name}")# Run tasks concurrentlyasync def main: await asyncio.gather(say_hello("Alice"), say_hello("Bob"))asyncio.run(main)

为什么使用它?
异步工具对于受 I/O 限制的任务(如 API 调用或数据库操作)至关重要。

感谢您阅读本文。我希望您觉得它有帮助且信息丰富。如果您有任何问题,或者您想为未来的教程推荐新的 Python 代码示例或主题,请随时与我们联系。随时欢迎您的反馈和建议!

来源:自由坦荡的湖泊AI一点号

相关推荐