Python 嵌套运算符

Python 嵌套运算符,python,nested,tuples,operator-keyword,Python,Nested,Tuples,Operator Keyword,我试图在Python2.7 tkinter中使用运算符编写一个元组列表理解。Alpha是原始数据,beta是结果 alpha=[(A,1,1,2), (B,2,2,2), (C,3,1,2)] 产品 beta=[(alpha[0],"%.2f"% reduce(mul,alpha[1:])) for alpha in alpha] beta [(A,2.00),(B,8.00),(C,6.00)] 总数 但是,当我试图将它们结合起来进行嵌套操作时,我被难住了。我怎样才能拿到票 产品总数 be

我试图在Python2.7 tkinter中使用运算符编写一个元组列表理解。Alpha是原始数据,beta是结果

alpha=[(A,1,1,2),
(B,2,2,2),
(C,3,1,2)]
产品

beta=[(alpha[0],"%.2f"% reduce(mul,alpha[1:])) for alpha in alpha]
beta
[(A,2.00),(B,8.00),(C,6.00)]
总数

但是,当我试图将它们结合起来进行嵌套操作时,我被难住了。我怎样才能拿到票

产品总数

beta
[(A,16.00),(B,16.00),(C,16.00)]
beta
[(A,0.13),(B,0.44),(C,0.38)]
产品/产品总数

beta
[(A,16.00),(B,16.00),(C,16.00)]
beta
[(A,0.13),(B,0.44),(C,0.38)]
我尝试了下面的各种迭代,但都没有成功

beta=[(alpha[0],"%.2f"% reduce(add, map(mul,alpha[1:])) for alpha in alpha]

以下是一种方法:

In [46]: alpha=[('A',1,1,2),('B',2,2,2),('C',3,1,2)]

In [49]: total = float(sum(reduce(mul,a[1:]) for a in alpha))

In [50]: total
Out[50]: 16.0

In [51]: [(a[0], "%.2f" % (reduce(mul,a[1:])/total)) for a in alpha]
Out[51]: [('A', '0.12'), ('B', '0.50'), ('C', '0.38')]

我假设
0.44
是一个打字错误。如果不是,请说明应该如何计算。

您可以将匿名函数与reduce一起使用:

sum_of_products = [(x[0], float(reduce(lambda y,z: y+z*z, x[1:],0))) for x in alpha]