当前位置: 首页 > 面试题库 >

Python-如何找到列表中数字的累计和?

翟嘉年
2023-03-14
问题内容
time_interval = [4, 6, 12]

我想对数字求和[4, 4+6, 4+6+12],以便得到列表t = [4, 10, 22]

我尝试了以下方法:

for i in time_interval:
    t1 = time_interval[0]
    t2 = time_interval[1] + t1
    t3 = time_interval[2] + t2
    print(t1, t2, t3)

4 10 22
4 10 22
4 10 22

问题答案:

如果你要对像这样的数组做大量的数值工作,我建议使用numpy,它带有一个累加和函数cumsum

import numpy as np

a = [4,6,12]

np.cumsum(a)
#array([4, 10, 22])

在这种情况下,Numpy通常比纯python更快,请参阅与@Ashwini的accumu比较:

In [136]: timeit list(accumu(range(1000)))
10000 loops, best of 3: 161 us per loop

In [137]: timeit list(accumu(xrange(1000)))
10000 loops, best of 3: 147 us per loop

In [138]: timeit np.cumsum(np.arange(1000))
100000 loops, best of 3: 10.1 us per loop

但是,当然,如果这是你唯一使用numpy的地方,则可能不值得依赖它。



 类似资料:
  • 问题内容: 这似乎是一个非常简单的问题,但是我正在寻找一种尚可理解的简短而甜蜜的方法(这不是代码高尔夫)。 给定一个字符串列表,找到最短字符串的最简单方法是什么? 对我来说最明显的方式大致是: 但这似乎是很多解决此问题的代码(至少在python中)。 问题答案: 该函数具有一个可选参数,可让您指定一个函数来确定每个项目的“排序值”。我们只是需要将其设置为的功能来获得最短的价值:

  • 我试图在列表中找到中位数。找到中位数的等式是 N 项/2。我尝试的代码是查找并索引该数字,但是当我索引时,我得到0或错误,为什么会这样? 这就是我所做的我还尝试了索引 这让我得到0 我怎样做才能得到中位数?我知道已经存在这样一个问题,但我想尝试一种不同的方法。

  • 问题内容: 实际输出: 预期输出: 我们如何在两个列表上实现布尔AND操作(列表交集)? 问题答案: 如果顺序不重要,并且你不必担心重复,则可以使用set相交:

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能对未来的读者有所帮助。 我正在试图找到列表的中间值。我试过两种方法,但都不管用(我已经导入了我需要的东西,列表就在那里)。自拍是列表的名称 这就是错误 ret = umr_sum(arr, axis, dtype, out, keepdims) TypeError:无法对灵活类型执行reduce 另

  • 问题内容: 有什么简单的方法或功能可以确定python列表中的最大数量?我只可以编写代码,因为我只有三个数字,但是如果我可以使用内置函数或类似的东西告诉最大的代码,那么它将使代码的冗余度降低很多。 问题答案: 关于什么

  • 我有一个这样的python列表, 我需要做的是找到每个数字与所有其他数字的差值,然后找到所有这些差值的平均值。 所以,对于这种情况,它首先会找到和所有剩余元素之间的区别,即,然后它会找到与剩余元素的区别,即等。 之后,它将计算所有这些差异的平均值。 现在,这可以通过两个For循环轻松完成,但是在时间复杂度和一点点“混乱”代码中。我想知道是否有更快,更有效的方法可以做同样的事情?