python – 用于汇总下几个项目的数据类型

我应该使用什么数据结构来表示下表

'a',1
'b',2
'c',3
'd',4
'e',5

所以计算下一行中第二项的总和似乎很自然:

例如当i = 1时

'a',2
'b',3
'c',4
'd',5

当i = 2时

'a',2+3=5
'b',3+4=7
'c',4+5=9

当我= 3

'a',2+3+4=9
'b',3+4+5=12

当我= 4

'a',2+3+4+5=14

我的两个想法:

>最初我将该表作为子列表列表:

lst = [['a',1],['b',2],['c',3],['d',4],['e',5]]

但我无法弄清楚如何进行上述计算(在
自然或直截了当的方式). sum(lst [0:0 i] [1])不起作用.
关于我的方式的问题是如何表示i的子列表
表中第二列的连续值,为此
lst [0:0 i] [1]不起作用. (并排使用两个括号不起作用吗?)
>我有一个想法,但我不知道如何实现它(有人可以指出它是否可以实现?):

>将上面的列表拆分为两个列表,每个列表对应每列.
>在第二列列表上进行计算
>将第一个列表和结果组合在第二列列表中.

谢谢.

解决方法

您可以创建以下功能

def my_sum(l,i):
    return [
        [x[0],sum(y[1] for y in l[j: j + i])] for j,x in enumerate(l[:-i],1)
    ]

例子:

>>> my_sum(lst,1)
[['a',5]]
>>> my_sum(lst,2)
[['a',5],7],9]]
>>> my_sum(lst,3)
[['a',9],12]]
>>> my_sum(lst,4)
[['a',14]]

编辑:

使用numpy基于第二个想法的实现:

import numpy as np

def my_sum(l,i):
    a,b,n = [v[0] for v in lst],np.array([v[1] for v in lst]),len(l)
    sums = np.zeros(n,dtype=np.int)
    for j in xrange(1,i + 1):
        sums[:n - j] += b[j: n]
    return zip(a[:-i],sums[:-i])

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...