我应该使用什么数据结构来表示下表
'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])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。