Мне нужно придумать эту уродливую вещь для понимания списков, но это может сработать, по крайней мере:
result = [tuple([tuple(row) if not isinstance(row, np.int64) else row for row in np.array(aa)+np.array(bb)]) for aa, bb in zip(a, b)]
a
Out[29]: [((1, 6), (4, 7), (4, 5)), ((3, 7), (8, 2), (2, 4)), (2, 4, 5)]
b
Out[30]: [((3, 7), (8, 2), (2, 4)), ((6, 5), (1, 7), (4, 8)), (7, 2, 1)]
result
Out[31]: [((4, 13), (12, 9), (6, 9)), ((9, 12), (9, 9), (6, 12)), (9, 6, 6)]
Возможно, вам придется настроить np.int64
на ваш тип numpy int по умолчанию.
Использование карты и лямбда-функции в этом может сделать его немного лучше, я думаю.
result = [tuple(map(lambda x: x if isinstance(x, np.int64) else tuple(x), np.array(aa)+np.array(bb))) for aa, bb in zip(a, b)]