【发布时间】:2014-12-07 23:15:17
【问题描述】:
这两个代码有什么区别?第一个有效,但第二个无效...
total=sum(prices[k]*stock[k] for k in prices)
for k in prices:
total=sum(prices[k]*stock[k])
【问题讨论】:
-
你从哪里得到
key?
标签: python dictionary
这两个代码有什么区别?第一个有效,但第二个无效...
total=sum(prices[k]*stock[k] for k in prices)
for k in prices:
total=sum(prices[k]*stock[k])
【问题讨论】:
key?
标签: python dictionary
第二个示例是在循环的每次迭代中重新创建总数。相反,你必须使用这样的东西:
total = 0
for k in prices:
total+=prices[k]*stock[k]
这会将total 初始设置为零,并将每次迭代的总数增加prices[k]*stock[k]。
【讨论】:
sum 没有任何用处。例如,如果您在迭代k=5,您的代码将计算prices[5]*stock[5] 的值。假设这个值原来是100。然后代码采用你传递给它的这个参数的sum,在这种情况下看起来像sum(100)。当然,100 的总和是 100。然后将该值分配给 total,它会替换上一次迭代的总数。使用+= 不会替换总数,而是将其添加到现有总数中。