0

我正在创建一个基于概率字典组成累积密度函数 (cdf) 的函数我面临一个奇怪的问题,即 x=x+y 的性能与 x=+y 不同

考虑

orgs_pdf= {"Sales":0.2,
       "Marketing":0.2,
       "IT":0.3,
       "Manufacturing":0.25,
       "Finances":0.05
        }

变体 1:

   def cdf(pdf):
        result={}
        cummdens=0
        total=sum(pdf.values())
            for n in pdf:
                cummdens=cummdens+pdf[n]/total
                result[n]=cummdens
        return result
    print(cdf(orgs_pdf))

输出 1:

{'Sales': 0.2, 'Marketing': 0.4, 'IT': 0.7, 'Manufacturing': 0.95, 'Finances': 1.0}

此输出符合预期

变体 2:

def cdf(pdf):
    result={}
    cummdens=0
    total=sum(pdf.values())
    for n in pdf:
        cummdens=+pdf[n]/total
        result[n]=cummdens
    return result

print(cdf(orgs_pdf))

输出 2:

{'Sales': 0.2, 'Marketing': 0.2, 'IT': 0.3, 'Manufacturing': 0.25, 'Finances': 0.05}

输出只是复制 orgs_pdf 字典

两个函数的唯一区别是我cummdens=cummdens+pdf[n]/total在第一个和cummdens=+pdf[n]/total第二个中使用,理论上它们应该以相同的方式工作,但它们没有。任何想法为什么?

4

1 回答 1

1

x+=y表示“x = x + y”。

x=+y表示“x = y 的正值”。

正如你能做x = -3的,你也能做x = +3。同样,x=-yx=+y

这是一个容易犯的错误。:)

于 2020-07-09T13:08:55.467 回答