it is likely faster to do ``dm[i, :i] = dm[:i, i] = asarray([self_i.distance(self[j]) for j in xrange(i)])``