此循环是否有正确的Python版本?

时间:2018-07-20 21:08:37

标签: python numpy

在将一个漂亮的简单循环转换为更pythonic的版本时,我引入了一个细微的(好吧,细心的情人在旁观者的眼中)。

数据结构是三个一维数组:

  • sums[10]个浮点数
  • indices[2] in [0,10)中的整数; 即索引为sum []
  • how_much[2]个浮点数

原始代码:

for i in range(2):  
    sums[indices[i]] += how_much[i]

因此,如果sums以全零开始,并且indices=[3,4]how_much=[.1,.2],那么我们将设置sums[3]=.1sums[4]=.2

Python版本:

sums[indices] += how_much

一切正常-indices[0] == indices[1]处的特殊情况除外。因此,如果sums再次以全零开始,则indices=[3,3]how_much=[.1, .2] ... 第一个循环设置sums[3]=.3,而Pythonic的“等效”设置sums[3]=.2

我在文档中没有发现这种情况,但是我承认numpy运行合理。不幸的是,这种行为对我的应用程序是不正确的。

有人能想到一种不错的Python方式来实现循环吗? (当然,在现实生活中,数组要大得多,并且我多次执行循环。)

0 个答案:

没有答案