【问题标题】:Is there a way to optimize these for loops?有没有办法优化这些 for 循环?
【发布时间】:2021-10-12 00:08:45
【问题描述】:

必须有一种方法可以在 Python 中优化此代码..

我有一个名为 calculate 的函数需要由不同的字典(operators1operators2)运行两次。

def main(string):
  for op1 in operators1:
    return calculate(string, op1)
    
  for op2 in operators2:
    return calculate(string, op2)

我在这个例子中简化了很多代码,但是我还有一堆其他的 if 语句和 for 循环,这对于两个 for 循环来说是完全相同的。所以看着那个,我看到很多重复的行。而且我不喜欢重复的行,所以我尝试将其优化为 1 for 循环。

def main(string):
  for x in range(2):
    for op in operators+(x+1):
      return calculate(string, op)

不幸的是,operators+(x+1) 或类似的东西不起作用。在将其视为字典的变量之前,它实际上并没有在其中添加 1 或 2。

接下来我尝试将两个字典放入一个新数组 opsArray

operatorsList = [operators1, operators2]

def main(string):
  for x in range(2):
    for op in operatorsList[x]:
      return calculate(string, op)

这也没有用,所以现在我一无所知。

我只是想将第一个示例中的 2 个 for 循环组合成一个 for 循环,以避免重复的 if 语句。 有人可以告诉我我在这里尝试做的事情是否真的可行以及如何做?

【问题讨论】:

  • 什么是操作?什么是总和?您应该使用与 sum 不同的变量名,因为那是关键字。
  • 我们需要一个 sum 的例子以及一个 char1 和 char2。
  • @Mark 我简化了代码并添加了更多信息。我希望这会有所帮助。
  • @Kosaro 我不认为这里使用的变量类型应该重要吗?我没有重命名变量,所以我希望能有所帮助
  • result=calculate(...) 代替return calculate(...) 怎么样?后者返回而不回来做另一件事。

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


【解决方案1】:

你已经走到了一半,离答案如此之近。

operatorsList = [operators1, operators2]

def main(string):
  for elem in operatorslist:
    for op in elem:
      return calculate(string, op)

它只是遍历字典并创建一个字典elem,其中等于operators1和operators2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多