If you want the output of reduce be a tuple, all intermediate results should also be a tuple.
a = [(1, 2), (1, 4), (1, 6)] print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), a)
Output
(3, 12)
Edit: If you want to get (0, 0) when the list is empty
a = [] print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), [(0, 0)] + a)
Output
(0, 0)
Edit 2: Reduce accepts the default initializer as the last parameter, which is optional. Using this, the code becomes
a = [] print reduce(lambda x, y: (x[0] + y[0], x[1] + y[1]), a, (0, 0))
source share