【问题标题】:Is it possible to change a for loop header within an if statement?是否可以在 if 语句中更改 for 循环标头?
【发布时间】:2018-08-10 11:04:04
【问题描述】:

我相信用一个例子可以更好地理解这个问题,比如说我有一个 for 循环,我想改变它是迭代一个 dict 还是迭代一个取决于变量的值范围。对于示例

    my_dict = [ 'value_a':5, 'value_b':8, ... ]

    if some_boolean:
        for i in range(0, 10):
    else:
        for i in my_dict:

            # body of the for loop

这不起作用,因为第一个 for 语句下没有任何内容。我曾想过用 range() 的值制作一个字典,或者将循环体写两次,但我想知道是否有更优雅的解决方案。

有没有什么方法可以做到这一点,而不用对变量做奇怪的事情?

谢谢!

【问题讨论】:

  • 您要动态执行此操作吗?或者只是在循环的开始?变量是否能够在循环内更改并更改可迭代对象?

标签: python python-3.x for-loop


【解决方案1】:

您可以这样做(作为上述答案的替代方法。):

def loop(condition):
    iterable = range(0,10) if condition else ['a','b','c']
    return iterable

#Then you cxan go as:

for i in loop(True):
    print('range')
#Or

for i in loop(False):
    print("Dict or any iterable")

【讨论】:

  • 哦,我不知道语句是否可以这样使用,现在我可以在字典中为 i 做 if condition else range(begin, end): .... 非常感谢你的答案:)
【解决方案2】:
x = False #True

y = 1,2,3,4,5,6,7,8,9,

z = 11,22,33,44,55,66,77,88,99

for i in y if x else z:
    print(i)

应该很容易理解,希望对你有帮助。

【讨论】:

  • 谢谢你的回答,两者结合是解决我问题的关键:)
猜你喜欢
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2015-12-18
  • 2018-03-11
  • 2016-06-16
相关资源
最近更新 更多