It's fine to keep it. The description of IA (here and there) is confusing. I think it should read `IA_i gives the index of the element in A that starts row i in the original matrix (IA_0 is always 0 and IA_-1 is always nnz).`

The whole things could perhaps be done as

```
A, JA, row = [list(i) for i in zip(*[[w[-1]]+list(reversed(w[:2])) for w in m.row_list()])]
IA = [0]
c = group(row, False)
[IA.append(IA[-1] + ci) for n, ci in c]
return [A, JA, IA]
```