在Python中使用嵌套列表

在Python中使用嵌套列表,python,list,python-3.x,Python,List,Python 3.x,从内部元组中取有序对之和并将之相乘的python方法是什么?对于上述示例: list_ = [(1, 2), (3, 4)] 例如: (1 + 3) * (2 + 4) = 24 适用于初始数组和内部元组的任意长度 另一个解决方案使用: 如果列表像所暗示的那样小,我觉得使用operator和itertools来处理类似的事情就像在螺母上使用大锤一样。同样地numpy。纯Python有什么问题 import numpy as np np.array(list_).sum(0).prod()

从内部元组中取有序对之和并将之相乘的python方法是什么?对于上述示例:

list_ = [(1, 2), (3, 4)]
例如:

(1 + 3) * (2 + 4) = 24
适用于初始数组和内部元组的任意长度

另一个解决方案使用:


如果列表像所暗示的那样小,我觉得使用
operator
itertools
来处理类似的事情就像在螺母上使用大锤一样。同样地
numpy
。纯Python有什么问题

import numpy as np
np.array(list_).sum(0).prod()
(虽然如果纯的话会好得多 Python有一个
产品
内置以及
sum
)。另外,如果您专门处理2元组对,那么任何形式的迭代都是一把大锤。只是编码

result = 1
for s in [ sum(x) for x in zip( *list_) ]: 
  result *= s

@彼得伍德:当然,为什么不呢?@erip因为从python 3中删除了
reduce
:@eumiro只是为了添加到可用的选项:而不是导入
operator.mul
lambda x,y:x*y
。虽然
op.mul
一开始确实没有什么错:)@kazemakase:谢谢你提供
reduce
info-我已经更新了答案。@blacked:functools.reduce(op.mul,(sum(x)for x in list(zip(*list))[:-1])?如果有3个元组:
list\u=[(1,2)、(3,4)、(5,6)]
?@erip
(1+3+5)*(2+4+6)=108
你也可以说使用
zip(*)
是一把大锤,而你只需要用纯python就可以了。使用
reduce
与您的代码做的事情一样简单,但更简洁,
reduce
是一个内置的
zip
,所以我个人觉得这种方法更容易阅读。实际上我以前的方法是错误的
zip
是一个内置的Python 3,但是
reduce
不是,所以我的方式是Python 2/3不可知论。
result = 1
for s in [ sum(x) for x in zip( *list_) ]: 
  result *= s
result = (list_[0][0]+list_[1][0] )*( list_[0][1]+list_[1][1])