Python 3.x 如何将itertools用于嵌套循环?

Python 3.x 如何将itertools用于嵌套循环?,python-3.x,itertools,Python 3.x,Itertools,我正在搜索一种使用itertools.accumulate的方法,该方法位于starmap中 我试图计算表中每一行的累积和,然后将结果连接到一个数组: #我的输入 my_table=[[3,5]、[1,4,7]、[2]] #预期产量 P=[3,8,1,5,12,2] 我在for循环中使用itertools,但它比其他方法慢得多。 那么,是否有可能使用星图或其他itertools方法使其更快呢 def getSums(我的表格): P=[] 对于范围内的i(len(my_table)): P.a

我正在搜索一种使用
itertools.accumulate
的方法,该方法位于
starmap

我试图计算表中每一行的累积和,然后将结果连接到一个数组:

#我的输入
my_table=[[3,5]、[1,4,7]、[2]]
#预期产量
P=[3,8,1,5,12,2]
我在for循环中使用itertools,但它比其他方法慢得多。 那么,是否有可能使用星图或其他itertools方法使其更快呢

def getSums(我的表格):
P=[]
对于范围内的i(len(my_table)):
P.append(itertools.accumulate(我的表[i]))
P=itertools.chain.from_iterable(P)
返回P

您不需要
starmap
只需使用内置的
map
函数并使用
itertools.chain()链接结果即可:


您不需要
starmap
只需使用内置的
map
函数并使用
itertools.chain()链接结果即可:


您可以在一个非常简化的版本中使用初始循环方法,使用
extend
,该方法可以采用任何iterable:

P = []
for lst in my_table:
    P.extend(accumulate(lst))

您可以在一个非常简化的版本中使用初始循环方法,使用
extend
,该方法可以采用任何iterable:

P = []
for lst in my_table:
    P.extend(accumulate(lst))

使用Itertools效果很好,下面是引擎盖下发生的事情,你可以写 您自己的解决方案只需使用生成器(无需stdlib)

def chain_cumsum(表):
对于表中的信息:
cumsum(it)的收益率
#写一个函数来获得累计和
def cumsum(升):
总数=0
对于l中的i:
总数+=i
总产量
#然后您可以获得您的输出:
列表(链表(我的表格))

使用Itertools效果很好,下面是引擎盖下发生的事情,您可以编写 您自己的解决方案只需使用生成器(无需stdlib)

def chain_cumsum(表):
对于表中的信息:
cumsum(it)的收益率
#写一个函数来获得累计和
def cumsum(升):
总数=0
对于l中的i:
总数+=i
总产量
#然后您可以获得您的输出:
列表(链表(我的表格))

非常感谢!我试过你的代码,效果很好。非常感谢!我试过你的代码,效果很好。