# Add terms to nested list

Suppose I have a nested list of the following:

list={{1,2},{5,8},{4,1}...}


I would like to add a number to each first term of the list. The output would be like the following:

{{1+x,2},{5+x,8},{4+x},1}...}

• {x, 0}+#&/@list Feb 5, 2016 at 14:43
• Worked great! Thanks! Feb 5, 2016 at 14:47

list = {{1, 2}, {5, 8}, {4, 1}};

{#1 + x, #2} & @@@ list
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

# + {x, 0} & /@ list
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

Transpose[{list[[All, 1]] + x, list[[All, 2]]}]
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

MapAt[x + # &, list, {All, 1}]
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)


Transpose only:

Transpose[Transpose@list + {x, 0}]
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

Replace[list, {a_, b_} :> {a + x, b}, {1}]
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

Inner[Plus, list, {x, 0}, List]
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)

• Don't forget MapAt[x + # &, list, {All, 1}] Feb 5, 2016 at 14:44
• I like this format really much Feb 5, 2016 at 14:45
• @JasonB Great, made it community wiki feel free to edit! Feb 5, 2016 at 14:45
• @march The problem with ReplaceAll is: what if Length[list] == 2? Feb 5, 2016 at 17:07
• @Szabolcs. Oh. Agreed. I like the Replace version better, since fixing the ReplaceAll version by doing, for instance, a_Symbol won't be general enough.Those not-so-corner cases kill me sometimes. Feb 5, 2016 at 17:09
list = {{1, 2}, {5, 8}, {4, 1}};


Using Threaded (new in 13.1)

list + Threaded[{x, 0}]


{{1 + x, 2}, {5 + x, 8}, {4 + x, 1}}

Using SubsetMap:

list = {{1, 2}, {5, 8}, {4, 1}};

SubsetMap[# + x &, list, {All, 1}]


{{1 + x, 2}, {5 + x, 8}, {4 + x, 1}}

list = {{1, 2}, {5, 8}, {4, 1}};


Using Cases:

Cases[list, {a_, b_} :> {a + x, b}]

(*{{1 + x, 2}, {5 + x, 8}, {4 + x, 1}}*)


First and foremost, I have to say that the solution using Threaded looks like the nicest one to me. Kudos to @eldo.

I want to demonstrate the use of ThroughOperator that was developed by @Sjoerd Smit. To the extend of my knowledge it was first suggested in this answer.

In this example we do

ResourceFunction["ThroughOperator"][{#1 + x &, #2 &}] @@@ list


{{1 + x, 2}, {5 + x, 8}, {4 + x, 1}}

A not so normal way of doing it is to use Outer

Transpose[{First /@ Join @@@ Outer[Plus, list, {x, 0}],
Last /@ Join @@@ Outer[Plus, list, {x, 0}]}]

list + ConstantArray[{x,0},Length@list]

(* {{1+x,2},{5+x,8},{4+x,1}} *)