在 Python 中,可以根据不同的 if
条件执行不同的 for range
循环,以下是几种实现方式及示例:
方法 1:直接嵌套 if
和 for
根据条件选择不同的 range
范围:
condition = "high" # 可改为 "low" 或 "mid"
if condition == "low":
for i in range(3): # 低范围: 0, 1, 2
print(f"Low range iteration: {i}")
elif condition == "mid":
for i in range(5): # 中范围: 0, 1, 2, 3, 4
print(f"Mid range iteration: {i}")
elif condition == "high":
for i in range(10): # 高范围: 0到9
print(f"High range iteration: {i}")
else:
print("Invalid condition")
输出(当 condition = "high"
):
High range iteration: 0 High range iteration: 1 ... High range iteration: 9
方法 2:动态生成 range
参数
将 range
的起止步长通过条件动态计算:
condition = "mid" # 可改为 "low" 或 "high"
# 根据条件设置 range 参数
if condition == "low":
start, end, step = 0, 3, 1
elif condition == "mid":
start, end, step = 0, 5, 1
elif condition == "high":
start, end, step = 0, 10, 2 # 高范围步长为2
else:
start, end, step = 0, 0, 1 # 默认不执行
for i in range(start, end, step):
print(f"{condition} range iteration: {i}")
输出(当 condition = "mid"
):
High range iteration: 0 High range iteration: 1 ... High range iteration: 9
方法 3:使用字典映射 range
参数
通过字典预定义不同条件的 range
参数,避免重复代码:
condition = "low" # 可改为 "mid" 或 "high"
# 定义不同条件的 range 参数
range_config = {
"low": {"start": 0, "end": 3, "step": 1},
"mid": {"start": 0, "end": 5, "step": 1},
"high": {"start": 0, "end": 10, "step": 2}
}
# 获取当前条件的配置
config = range_config.get(condition, {"start": 0, "end": 0, "step": 1})
for i in range(config["start"], config["end"], config["step"]):
print(f"{condition} range iteration: {i}")
输出(当 condition = "low"
):
low range iteration: 0 low range iteration: 1 low range iteration: 2
方法 4:函数封装不同循环逻辑
将不同条件的 for
循环封装为函数,提升代码复用性:
def run_low_range():
for i in range(3):
print(f"Low range: {i}")
def run_mid_range():
for i in range(5):
print(f"Mid range: {i}")
def run_high_range():
for i in range(10):
print(f"High range: {i}")
# 根据条件调用对应函数
condition = "high"
if condition == "low":
run_low_range()
elif condition == "mid":
run_mid_range()
elif condition == "high":
run_high_range()
else:
print("Invalid condition")
输出(当 condition = "high"
):
High range: 0
High range: 1
...
High range: 9
方法 5:使用闭包或 lambda 动态生成循环
通过闭包或 lambda 动态生成循环逻辑(适用于复杂场景):
condition = "mid"
# 定义不同条件的循环生成器
range_generators = {
"low": lambda: range(3),
"mid": lambda: range(5),
"high": lambda: range(0, 10, 2)
}
# 获取当前条件的循环并执行
generator = range_generators.get(condition, lambda: range(0))
for i in generator():
print(f"{condition} range iteration: {i}")
输出(当 condition = "mid"
):
mid range iteration: 0
mid range iteration: 1
...
mid range iteration: 4
应用场景对比
场景 | 推荐方法 | 优势 |
---|---|---|
简单条件分支 | 方法1(直接嵌套) | 代码直观,易于理解 |
需要动态计算 range 参数 | 方法2(动态参数) | 灵活控制起止和步长 |
多条件且参数固定 | 方法3(字典映射) | 避免重复代码,便于维护 |
循环逻辑复杂或需复用 | 方法4(函数封装) | 模块化设计,适合大型项目 |
需要动态生成循环逻辑 | 方法5(闭包/lambda) | 高度灵活,适合高阶编程 |
总结
- 简单需求:直接嵌套
if
和for
(方法1)。 - 参数化需求:动态生成
range
参数(方法2或方法3)。 - 复杂逻辑:封装为函数或使用闭包(方法4或方法5)。