gpt4 book ai didi

python - 用于对接下来的几项求和的数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:31 25 4
gpt4 key购买 nike

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

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

因此计算接下来 i 行中第二项的总和似乎很自然:

例如当 i=1

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

当 i=2

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

当 i=3

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

当 i=4 时

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

我的两个想法:

  1. 最初我将表表示为子列表的列表:

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

    但我不知道如何进行上述计算(在自然或直接的方式)。 sum(lst[0:0+i][1]) 不起作用。关于我的方式的问题是如何表示 i 的子列表表中第二列的连续值,其中lst[0:0+i][1] 不起作用。 (并排使用两个支架不行吗?)

  2. 我有另一个想法,但我不知道如何实现(有人能指出是否可以实现吗?):

    • 将上面的列表分成两个列表,每个列表对应每一列。

    • 对第二列列表进行计算

    • 合并第一个列表和第二列列表的结果。

谢谢。

最佳答案

您可以创建以下函数:

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', 2], ['b', 3], ['c', 4], ['d', 5]]
>>> my_sum(lst, 2)
[['a', 5], ['b', 7], ['c', 9]]
>>> my_sum(lst, 3)
[['a', 9], ['b', 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])

关于python - 用于对接下来的几项求和的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com