当前位置: 首页 > 知识库问答 >
问题:

python - 两段代码只有几行不一样,且分散,如何优化?

胡致远
2024-01-31

比如:

if d_m > d_o:    d1 = d_m    sf_0 = scale_factor * 0.5    sf_1 = scale_factor    for i in range(20):        # ... 省略        if d < d1:            # ... 省略            sf_0 = sf        else:            sf_1 = sf            breakelse:    d1 = d_o    sf_0 = 0    sf_1 = scale_factor * 0.5    for i in range(20):        # ... 省略        if d < d1:            # ... 省略            sf_1 = sf        else:            sf_0 = sf            break

相似度很高,但逻辑顺序不能变,这种能优化吗?

共有1个答案

卫开济
2024-01-31

这段代码的确存在优化空间。由于sf_0sf_1的值只在for循环内部被改变,我们可以将这两个变量的赋值移出循环,从而减少代码重复。此外,我们也可以将两个for循环合并为一个,以进一步减少代码量。

优化后的代码如下:

if d_m > d_o:    d1 = d_m    sf_0 = scale_factor * 0.5    sf_1 = scale_factorelse:    d1 = d_o    sf_0 = 0    sf_1 = scale_factor * 0.5for i in range(20):    # ... 省略    if d < d1:        # ... 省略        if d_m > d_o:            sf_0 = sf        else:            sf_1 = sf    else:        if d_m > d_o:            sf_1 = sf        else:            sf_0 = sf        break

在这个版本中,我们保留了原始代码的逻辑顺序,同时减少了代码重复。这样可以使代码更简洁、易读,并可能提高运行效率。

 类似资料:
  • python 作为一门计算机语言来说,Python会有下面的特点。 语言学习起来容易 解决生活中的实际问题 支持多学科 我们可以和其他不是脚本语言的语言进行一个简单的对比,如C,你需要去编译去运行,有时候还需要解决跨平台问题,本来你是在你的Windows上运行得好好的,但是有一天你换了一个Mac电脑的时候,问题变得很棘手,你甚至不知道怎么去解决问题。我没有用过MFC,听说很方便,但是在其他平台下就

  • 我不明白为什么我会有这个错误信息。 首先,我不仅找不到两个之间的任何区别,而且为什么错误消息说添加(布尔)?我想应该是add(int index)。这里有什么问题吗?

  • 问题内容: 是否有一种机制可以注释掉大量的Python代码? 现在,我能看到的注释掉代码的唯一方法是用a开头每一行,或者用三引号将代码括起来。 这些问题是,在每一行之前插入都很麻烦,并使要用作注释的字符串显示在生成的文档中。 阅读所有评论后,答案似乎是“否”。 问题答案: Python没有这种机制。在每行前面加a可以阻止评论。有关更多信息,请参阅PEP 8 。大多数Python IDE支持一种为您

  • 问题内容: 我想显示一些观点。这是我的代码: 和我一样: 所以我有两种不同颜色的点。但是我也想有两个不同的标记。我该怎么做?给出一个错误。 问题答案: 每个标记可以使用一个散点图。

  • 如何在PHP Smarty中优化这段代码? 现在我有一个代码让我困惑,有一个简单的代码。 当我搜索需要推送值的代码时。 优化如何发挥作用?我能写到数组吗?如果它可以写入数组,我该怎么办?