# Manipulating the elements of two lists

I have two lists of the form:

list1 = {{1, 2.003}, {3, 2.01}, {2, 1.0011}};
list2 = {{2, 1.001}, {3, 2.0034}, {2, 1.0001}};


I want to do the following:

Get the absolute value of subtracting each two second sub-elements in the two lists from each other. For example {1, 2.003} from list1 and {3, 2.0034} from list2. $$|2.003-2.0034|$$ and if it is in the range from 0.0001 to 0.001 subtract their corresponding first items i.e. $$|1-3|$$ in absolute value also.

How to do that for all the elements in the two lists in Mathematica?

I am guessing that you want something like the following:

To do something to each pair of elements from list1 and list2 you can use Outer:

table = Outer[Module[{d = Abs @ Subtract @ ##},
If[0.0001 <= d[[2]] <= 0.001, d, d[[2]]]] &, list1, list2,  1];


Add list1 and list2 as row and column headers and display using Grid:

Grid[Prepend[Join[List /@ list1, table, 2], Prepend[list2, ""]],
Alignment -> {Center, Center},
Dividers -> {{1 -> Black, -1 -> Black, 2 -> Gray}, {1 -> Black, -1 -> Black, 2 -> Gray}}]


• That is exactly what I want , thank you very much. Appreciate the Help. – Rami1234 Jul 27 '19 at 17:54
• @Rami1234, glad it worked for you. Welcome to mma.se. – kglr Jul 27 '19 at 17:56
• Can you help to only get those who satisfy the condition as the table is very big, it has about 700 rows. – Rami1234 Jul 27 '19 at 18:10
• @Rami1234, try table2 = Outer[Module[{d = Abs @ Subtract @ ##}, If[0.0001 <= d[[2]] <= 0.001, d, Nothing]] &, list1, list2, 1]; – kglr Jul 27 '19 at 18:56
• it gave this \begin{array}{|c|ccc} \hline \text{} & \{3,2.0034\} & \{2,1.001\} & \{2,1.0001\} \\ \hline \{1,2.003\} & \{2,0.0004\} & \text{} & \text{} \\ \{3,2.01\} & \text{} & \text{} & \text{} \\ \{2,1.0011\} & \{0,0.0001\} & \text{} & \text{} \\ \end{array} – Rami1234 Jul 27 '19 at 19:11