Easy to do with Map
.
This generates a random sparse matrix(array):
{m, n} = {1000, 2000};
pairs = Flatten[
Outer[List, RandomInteger[{1, m}, Floor[0.7 m]],
RandomInteger[{1, n}, Floor[0.7 n]]], 1];
smat = SparseArray[
Thread[pairs -> RandomReal[{0, 1}, Length[pairs]]], {m, n}]

Get the rows:
vecs = Map[# &, smat];
Verify it is all sparse arrays:
Shallow[Head /@ vecs]
(* Out[170]//Shallow= {SparseArray, SparseArray, SparseArray, \
SparseArray, SparseArray, SparseArray, SparseArray, SparseArray, \
SparseArray, SparseArray, <<990>>} *)
Here is some profiling code:
Profiling code:
memOld = MemoryInUse[];
timeOld = Date[];
vecs = Map[# &, smat];
memNew = MemoryInUse[];
timeNew = Date[];
(memNew - memOld)
(memNew - memOld)/memOld // N
timeNew - timeOld
(* 12172576
0.170369
{0, 0, 0, 0, 0, 0.021384} *)
(I got the output on a 2.3 GHz Intel Core i7 MacBook Pro laptop with Mathematica 10.3.2.)
Table[SparseArray[Band[{1, 1}] -> 1, {4, 4}][[k]], {k, 4}]
? $\endgroup$SparseArray[]
in my snippet with yours, for example. $\endgroup$