python有条件代码解释吗?
Does python have conditional code interpretation?
我想知道 python 是否有条件代码解释之类的东西。像这样:
x = True
if x:
for i in range(0, 10):
else:
for i in range(0, 100):
# ------------------------------
print(i) # this is the code inside either one these for loop heads
我知道我可以做到:
x = True
if x:
for i in range(0, 10):
print(i)
else:
for i in range(0, 100):
print(i)
但就我而言,我有很多 for 循环代码,这不是一个很好的解决方案。
不,它没有那种语法。不过,您可以通过其他方式实现相同的目标。
例如,从公共部分(for in range(...)
循环)中提取变化的部分(10
与 100
):
limit = 10 if x else 100
for i in range(limit):
print(i)
或者将两个不同范围之一保存在一个变量中并对其进行循环:
numbers = range(0, 10) if x else range(0, 100)
for i in numbers:
print(i)
或者将循环提取到每次迭代执行任意操作的函数:
def loop(limit, action):
for i in range(limit):
action(i)
loop(10 if x else 100, lambda i: print(i))
如果你愿意,你可以这样做。
x = True
for i in range(0, (10 if x else 20)):
print(i)
这里的 if else 语句是这样的 result_if_true if condition else result_if_false
.
if x:
my_iter = range(0, 10)
else:
my_iter = range(0, 100)
for i in my_iter:
print(i)
你总是可以这样做:
x = True
for i in range(0,10) if x else range(0, 100):
print(i)
我想知道 python 是否有条件代码解释之类的东西。像这样:
x = True
if x:
for i in range(0, 10):
else:
for i in range(0, 100):
# ------------------------------
print(i) # this is the code inside either one these for loop heads
我知道我可以做到:
x = True
if x:
for i in range(0, 10):
print(i)
else:
for i in range(0, 100):
print(i)
但就我而言,我有很多 for 循环代码,这不是一个很好的解决方案。
不,它没有那种语法。不过,您可以通过其他方式实现相同的目标。
例如,从公共部分(for in range(...)
循环)中提取变化的部分(10
与 100
):
limit = 10 if x else 100
for i in range(limit):
print(i)
或者将两个不同范围之一保存在一个变量中并对其进行循环:
numbers = range(0, 10) if x else range(0, 100)
for i in numbers:
print(i)
或者将循环提取到每次迭代执行任意操作的函数:
def loop(limit, action):
for i in range(limit):
action(i)
loop(10 if x else 100, lambda i: print(i))
如果你愿意,你可以这样做。
x = True
for i in range(0, (10 if x else 20)):
print(i)
这里的 if else 语句是这样的 result_if_true if condition else result_if_false
.
if x:
my_iter = range(0, 10)
else:
my_iter = range(0, 100)
for i in my_iter:
print(i)
你总是可以这样做:
x = True
for i in range(0,10) if x else range(0, 100):
print(i)