How to re-arrange following list:
{a1,b1,a2,b2,a3,b3,a4,b4} or this {a1,b1},{a2,b2},{a3,b3},{a4,b4}
to get:
{a1,a2,a3,a4},{b1,b2,b3,b4}
so divide a list into 2 lists of rearranging step=2, each second element
How to re-arrange following list:
{a1,b1,a2,b2,a3,b3,a4,b4} or this {a1,b1},{a2,b2},{a3,b3},{a4,b4}
to get:
{a1,a2,a3,a4},{b1,b2,b3,b4}
so divide a list into 2 lists of rearranging step=2, each second element
l1 = {a1, b1, a2, b2, a3, b3, a4, b4} ;
l2 = {{a1, b1}, {a2, b2}, {a3, b3}, {a4, b4}};
Transpose[ArrayReshape[#, {4, 2}]] &@l1
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}} *)
Transpose[ArrayReshape[#, {4, 2}]] &@l2
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}} *)
Also
Flatten[l1][[# ;; ;; 2]] & /@ {1, 2}
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}}*)
Flatten[l2][[# ;; ;; 2]] & /@ {1, 2}
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}} *)
For l2 only:
Thread[l2]
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}} *)
Flatten[l2, {{2}, {1}}]
(* {{a1, a2, a3, a4}, {b1, b2, b3, b4}} *)
2nd list:
Transpose[{{a1, b1}, {a2, b2}, {a3, b3}, {a4, b4}}]
1st list can be transformed into the second list and then handled the same way:
Transpose[Partition[{a1, b1, a2, b2, a3, b3, a4, b4}, 2]]
It can also be done with Part ([[ ]]):
l1 = {{a1, b1}, {a2, b2}, {a3, b3}, {a4, b4}};
{l1[[All, 1]], l1[[All, 2]]}
l2 = {a1, b1, a2, b2, a3, b3, a4, b4};
{l2[[1 ;; ;; 2]], l2[[2 ;; ;; 2]]}
This is not recommended for this situation, but it's good to know :)
Transposefor the second. – Mr.Wizard Apr 18 '15 at 16:22