Just another way using `MapApply`: MapApply[Function[{x, y}, If[x > y, 1, 0]], Transpose[List[list1, list2]]] (*{If[a > x, 1, 0], If[b > y, 1, 0], If[c > z, 1, 0]}*) Another way using `Map`: If[#[[1]] > #[[2]], 1, 0] & /@ Transpose[List[list1, list2]] (*{If[a > x, 1, 0], If[b > y, 1, 0], If[c > z, 1, 0]}*) Another way using `Outer`: Diagonal[Outer[If[#1 > #2, 1, 0] &, list1, list2]] (*{If[a > x, 1, 0], If[b > y, 1, 0], If[c > z, 1, 0]}*) Using `Thread`: If[#[[1]] > #[[2]], 1, 0] & /@ Thread[Greater[list1, list2]] (*{If[a > x, 1, 0], If[b > y, 1, 0], If[c > z, 1, 0]}*) Just using `Thread` in a simpler way:: Thread[If[Thread@Greater[list1, list2], 1, 0]] (*{If[a > x, 1, 0], If[b > y, 1, 0], If[c > z, 1, 0]}*)