I have the following two lists (each containing over 500,000 elements). Here is a sample:
lis1 = { {1.86582, 1.70162, 1.25256}, {1.82707, 1.29901, 1.10659},
{1.76547, 1.21544, 1.09433}, {1.18306, 1.28322, 1.75524},
{1.12555, 1.98011, 1.53359}, {1.10584, 1.12299, 1.88411},
{1.83799, 1.5275, 1.76179}, {1.42352, 1.45163, 1.45318},
{1.63669, 1.78145, 1.60307}, {1.61749, 1.44287, 1.57405}
};
and
lis2 = {0.826095, 0.73286, 0.918137, 0.937434, 0.506525,
0.562795, 0.664915, 0.789321, 0.6559, 0.398447}
They both have equal Length
s. I want to combine both Lists to obtain a new list that looks like this
{ {1.86582, 1.70162, 1.25256, 0.826095},
{1.82707, 1.29901, 1.10659, 0.73286},
{1.76547, 1.21544, 1.09433, 0.918137},
{1.18306, 1.28322, 1.75524, 0.937434},
{1.12555, 1.98011, 1.53359, 0.506525},
{1.10584,1.12299, 1.88411, 0.562795},
{1.83799, 1.5275, 1.76179, 0.664915},
{1.42352, 1.45163, 1.45318, 0.789321},
{1.63669, 1.78145,1.60307, 0.6559},
{1.61749, 1.44287, 1.57405, 0.398447} }
That is, each element of the combined list contains the corresponding elements of lis1
and lis2
, with the first three elements being from lis1
and the fourth element from lis2
.
Here is what I did to combine them in this fashion:
Transpose[{lis1, lis2}] //. {{a_, b_, c_}, d_} :> {a, b, c, d}
Is there a faster way to achieve this as my lists are huge ?
Join[lis1, List /@ lis2, 2]
$\endgroup$Flatten /@ Thread[{lis1, lis2}]
... some benchmarking might be in order... $\endgroup$List /@ ...
. This version will be considerably faster still:Join[lis1, Transpose[{lis2}], 2]
. $\endgroup$