美文网首页会Python就够了
如何让列表内的元素前后相加生成新的元素?

如何让列表内的元素前后相加生成新的元素?

作者: 藕丝空间 | 来源:发表于2019-07-12 19:12 被阅读0次

    列表推导是一种优雅简洁,代码量少且能干大事儿的语法格式。

    需求:
    有这样的一个原始数据 [1, 2, 3, 4],暂且我们把这样的一个列表放到变量 data 里:

    data = [1, 2, 3, 4]
    

    现在的需求是,想通过列表推导,让元素内的数据前后相加,变成如下列表:

    data1 = [1, 3, 5, 7] # 与前面的一个元素相加
    data2 = [1, 3, 6, 10] # 与前面的元素累计相加
    

    代码实现
    1、用列表推导的方式

    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)]
    data1= [sum(data[x-1:x+1]) if x>0 else data[0] for x in range(0,len(data))]
    data2= [sum(data[:x]) for x in range(1,len(data)+1)]
    

    2、使用 itertools 库

    虽然列表推导比较简洁优雅,代码量少,但并不意味着是高效率,所以使用 itertools 库也 不失为一个好办法。

    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)
    

    相关文章

      网友评论

        本文标题:如何让列表内的元素前后相加生成新的元素?

        本文链接:https://www.haomeiwen.com/subject/bloykctx.html