2
$\begingroup$

I have two lists.

a = {{2, 2}, {3, 3}, {4, 4}, {5, 5}};
b = {1, 1};

I want to subtract a from b and want to get

{{1, 1}, {2, 2}, {3, 3}, {4, 4}}`

When I tried Subtract[a, b], I got an error. How do I fix this?

$\endgroup$
3
  • $\begingroup$ If you don't know start with Map, i.e. # - b & /@ a. $\endgroup$
    – Artes
    Apr 24, 2014 at 4:26
  • $\begingroup$ Basic issue as Artes has shown or duplicate of flexible threading $\endgroup$
    – Kuba
    Apr 24, 2014 at 5:00
  • $\begingroup$ Even better canditate for duplicate Extending listability to coordinates $\endgroup$
    – Kuba
    Apr 24, 2014 at 5:12

1 Answer 1

4
$\begingroup$

Artes comment as an answer.

a = {{2, 2}, {3, 3}, {4, 4}, {5, 5}};
b = {1, 1};
(# - b)& /@ a
{{1, 1}, {2, 2}, {3, 3}, {4, 4}}

In the special case of your example, because of the way Mathematica defines addition of a scalar to a list, you can do

a - 1
{{1, 1}, {2, 2}, {3, 3}, {4, 4}}

a - x will work for any pair of the form b = {x, x}.

$\endgroup$
2
  • $\begingroup$ Maybe you could add: in this special case the same result can be achieved simply with a - 1. $\endgroup$
    – Jens
    Apr 24, 2014 at 5:10
  • $\begingroup$ @Jens. Good idea. Done. $\endgroup$
    – m_goldberg
    Apr 24, 2014 at 5:29

Not the answer you're looking for? Browse other questions tagged or ask your own question.