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}...}
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}...}
list = {{1, 2}, {5, 8}, {4, 1}};
{#1 + x, #2} & @@@ list
(* {{1 + x, 2}, {5 + x, 8}, {4 + x, 1}} *)
Map:
# + {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}} *)
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.
– march
Feb 05 '16 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}]}]