Я не уверен, что понимаю, о чем вы просите, возможно, что-то упустил.
Ваш опубликованный код изобилует синтаксическими ошибками и неопределенными функциями.
Тем не менее, это делает то, о чем я думаю, что вы просите, но с другими результатами:
>>> from operator import mul
>>> A = [('Apple',0.95,0.99,0.89,0.87,0.93),('Bear',0.33,0.25,0.85,0.44,0.33),('Crab',0.55,0.55,0.10,0.43,0.22)]
>>> B = [('Apple',1.00,0.99,1.00,0.95,0.99),('Bear',0.99,0.99,0.99,0.99,0.99),('Crab', 0.05,0.19,1.00,0.55,0.89)]
>>> C = [ (a[0],reduce(mul,a[1:])/reduce(mul,b[1:])) for (a,b) in zip(A,B) ]
>>> C
[('Apple', 0.72737272727272728), ('Bear', 0.010706894358222457), ('Crab', 0.6153755174452985)]
Дополнительно
Или что, если бы я просто отбросил матрицу B и строка C 'Apple' была бы равна:
0,95 * 0,99 * 0,89 * 0,87 * 0,83
>>> prodA = [ (a[0],reduce(mul,a[1:])) for a in A ]
>>> prodA
[('Apple', 0.67725310950000006), ('Bear', 0.010182150000000001), ('Crab', 0.0028616500000000003)]
И
Как бы я изменил это, чтобы получить произведение каждой строки для каждого элемента A, деленное на его парный элемент B? то есть строка C 'Apple' будет равна:
[('Apple', (0,95 / 1,00) * (0,99 / 0,99) * (0,89 / 1,00) * (0,87 / 0,95) * (0,93 / 0,99)]
>>> A_by_B = [ [x[0][0]]+[i/j for (i,j) in x[1:]] for x in [ zip(a,b) for (a,b) in zip(A,B) ]]
>>> A_by_B
[
['Apple', 0.94999999999999996, 1.0, 0.89000000000000001, 0.9157894736842106, 0.93939393939393945],
['Bear', 0.33333333333333337, 0.25252525252525254, 0.85858585858585856, 0.44444444444444448, 0.33333333333333337],
['Crab', 11.0, 2.8947368421052633, 0.10000000000000001, 0.78181818181818175, 0.24719101123595505]
]
>>> prod_A_by_B = [ (x[0],reduce(mul,x[1:])) for x in A_by_B ]
>>> prod_A_by_B
[('Apple', 0.72737272727272728), ('Bear', 0.010706894358222457), ('Crab', 0.61537551744529861)]
Каждое значение каждой строки A, деленное на значение B, а затем произведение каждой строки, совпадает с произведением каждой строки A, деленным на произведение каждой строки B.