我有这个元组列表,想要创建一个新列表,其中包含前面列表索引的累积总和:
l1 = []
for j in l: #already a given list
result = tuple(map(sum, zip(j, j+1)))
#or
result = (map(operator.add, j, j+1,))
l1.append(result)
我正在使用:
zip
两种情况(operator
和# x is a np array
img_mean = x.mean(axis=0)
img_std = np.std(x)
x = (x - img_mean) / img_std
)都会返回
" TypeError:只能将元组(不是" int")连接到元组"
答案 0 :(得分:5)
您可以使用itertools.accumulate
:
>>> import itertools
>>> itertools.accumulate([1, 3, 5])
<itertools.accumulate object at 0x7f90cf33b188>
>>> list(_)
[1, 4, 9]
它接受一个可选的func
,用于添加:
>>> lst = [(1.0, 1.0), (3.0, 3.0), (5.0, 5.0)]
>>> import itertools
>>> list(itertools.accumulate(lst, lambda a, b: tuple(map(sum, zip(a, b)))))
[(1.0, 1.0), (4.0, 4.0), (9.0, 9.0)]
Python 3.2中引入了 itertools.accumulate
。如果您使用较低版本,请使用以下accumulate
(来自功能文档):
import operator
def accumulate(iterable, func=operator.add):
it = iter(iterable)
try:
total = next(it)
except StopIteration:
return
yield total
for element in it:
total = func(total, element)
yield total
答案 1 :(得分:0)
NVM,可以用这段代码解决:
result1=0
result2=0
l1=[]
for k, v in l:
result1+=k
result2+=v
l1.append((result1, result2))
非常感谢您的帮助! =)