在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 如何讓列表內(nèi)的元素前后相加生成新的元素?

如何讓列表內(nèi)的元素前后相加生成新的元素?

原始數(shù)據(jù)如下:

data = [1, 2, 3, 4]

想通過列表推導(dǎo),讓元素內(nèi)的數(shù)據(jù)前后相加,變成如下列表:

data1 = [1, 3, 5, 7] # 與前面的一個(gè)元素相加
data2 = [1, 3, 6, 10] # 與前面的一個(gè)元素累計(jì)相加
回答
編輯回答
風(fēng)清揚(yáng)

測(cè)資:

data = [1, 2, 3, 4]

代碼:

from itertools import accumulate

data1 = [v + (data[i-1] if i > 0 else 0) for i, v in enumerate(data)]
data2 = list(accumulate(data))

print(data1)
print(data2)

結(jié)果:

[1, 3, 5, 7]
[1, 3, 6, 10]

我回答過的問題: Python-QA

2017年6月22日 22:34
編輯回答
拼未來
data1= data[:1] + [x+y for x,y in zip(data[1:],data[:-1])]
data1= data[:1] + [sum(data[x:x+2]) for x in range(len(data)-1)]
data2= [sum(data[:x]) for x in range(1,len(data)+1)]

data1 其實(shí)你也可以用帶 if else的列表推到而不用單獨(dú)處理第一個(gè)。
data1= [sum(data[x-1:x+1]) if x>0 else data[0] for x in range(0,len(data))]

2018年1月14日 20:36
編輯回答
未命名
from itertools import accumulate
data = [1, 2, 3, 4]

data1 = [x + y for x, y in enumerate(data)]
data2 = list(accumulate(data))

print(data1)
print(data2)
2017年10月8日 06:33
編輯回答
妖妖
pre = 0
def foo(x):
    global pre
    y = x + pre
    pre = x
    return y

subtotal = 0
def bar(x):
    global subtotal
    subtotal = x + subtotal
    return subtotal

data = [1, 2, 3, 4]

data1 = list(map(foo, data))

data2 = list(map(bar, data))

print(data1, data2)
2018年6月8日 04:06