Skip to main content
 首页 » 编程设计

python之如何将列表添加到一起

2025年05月04日9langtianya

我正在尝试找出一个问题,但我感到困惑。基本上我有一个列表,它应该代表银行对帐单。我正在尝试将列表加在一起,以便将本应代表提款的负数加在一起,将正数加在一起代表存款。到目前为止我得到了

def statement(l): 
    deposit = 0 
    withdrawl = 0 
    for a in l: 
        a = sum(l) 
    for b in l: 
        if b == -b: 
            b = sum(b)         
    return [a,-b] 

但是当我执行 statement([30.95,-15.67,45.56,-55.00,43.78]) 它返回 [49.620000000000005, -43.78] 什么时候应该返回 [120.29,-70.67] 有人可以帮忙吗?

谢谢!

请您参考如下方法:

以下似乎可以做到这一点:

In [1]: def statement(l): 
   ...:     pos, neg = 0, 0 
   ...:     for a in l: 
   ...:         if a > 0: pos += a 
   ...:         else: neg += a 
   ...:     return pos, neg 
   ...:  
 
In [2]: statement([30.95,-15.67,45.56,-55.00,43.78]) 
Out[2]: (120.29, -70.67) 

它返回一个 tuple而不是 list ,这似乎更合乎逻辑,因为长度是固定的。


以下是对您尝试的一些评论:

for a in l: 
    a = sum(l) 

这将导致 l 的所有元素的总和正在计算len(l)次,这没有多大意义。要获得总和,只需执行 a = sum(l)一次。

if b == -b: - 你可能希望它检查一个数字是否为负数,但实际上它检查是否 b等于零,因为零是唯一的 x这样x == -x .你要if b < 0: .


我检查了哪个答案在 CPython 3.3 上更快,不出所料,这个答案在给定的示例中快了大约 2 倍:2.3 us per loop对比5.98 us per loop .