Construct a list from two other lists of unequal length
Some ideas:
Partition[Riffle[color, ind, {2, -1, 2}], 2]
Flatten[{color, ind}, {2}] // Cases[{_, _}]
{color, PadRight[ind, Length@color]}\[Transpose]
ind ~Riffle~ color ~Partition~ 2 ~Reverse~ 2
MapIndexed[{#, Extract[ind, #2]} &, color]
Take[#, All, Min[Length /@ #]]\[Transpose] &[{color, ind}]
All produce:
{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}
I'll note that the last method, which was perhaps my most serious attempt to answer this pragmatically, can be applied to any number of lists:
fn = Take[#, All, Min[Length /@ #]]\[Transpose] &;
fn[{{1, 2, 3}, Alphabet[], 2^Range@5}]
{{1, "a", 2}, {2, "b", 4}, {3, "c", 8}}
Here is a function to do it for any two lists. It doesn't care about the order in which the lists appear as arguments.
makePairs[a_List, b_List] :=
Transpose[Take[#, Min[{Length @ a, Length @ b}]] & /@ {a, b}]
makePairs[color, ind]
{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}
makePairs[ind, color]
{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}
Another variant:
DeleteCases[
Transpose[PadRight[{color, ind}, Automatic, Missing]], {___,
Missing, ___}]