我无法解决此问题:
多个序列的并行处理是数据分析的强大功能
定义一个函数mySumParallel(seqs)
,该函数将前面定义的mySum()
应用于并行数值序列的任意集合。此函数返回传入集合中所有序列的和的列表
例如,调用mySumParallel(collection)
,其中collection = [[1, 12, 89, 5], range(100), range(2, 9, 3)]
返回[107, 4950, 15]
至于mySum()
,我已经这样做了:
def mySum(*elems):
if not elems: return 0
sumOfElems = 0
for elem in elems:
sumOfElems += elem
return sumOfElems
我尝试使用以下代码解决此问题:
collection = [[1, 12, 89, 5], range(100), range(2, 9, 3)]
def mySumParallel(*seqs):
return list(map(mySum,seqs))
mySumParallel(collection)
但它显示了这样一个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-108-2f21ae17a1db> in <module>
7 return list(map(mySum,seqs))
8
----> 9 mySumParallel(collection)
<ipython-input-108-2f21ae17a1db> in mySumParallel(*seqs)
5
6 def mySumParallel(*seqs):
----> 7 return list(map(mySum,seqs))
8
9 mySumParallel(collection)
<ipython-input-105-573e7bfa9b5f> in mySum(*elems)
4 sumOfElems = 0
5 for elem in elems:
----> 6 sumOfElems += elem
7 return sumOfElems
8
TypeError: unsupported operand type(s) for +=: 'int' and 'list'
而调用mySumParallel(collection)
时的预期输出collection = [[1, 12, 89, 5], range(100), range(2, 9, 3)]
将返回[107, 4950, 15]
任何帮助都将不胜感激
需要注意的几件事:
mySumParallel
中返回/打印list(map(mySum, seqs))
编辑:编辑下面的代码,以适应OP增加的
mySum
无法更改的新限制工作代码:
相关问题 更多 >
编程相关推荐