加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:07:55 所属栏目: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 我的两个想
我应该使用什么数据结构来表示下表

'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])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读