在Python表中累加负数

在Python表中累加负数,python,Python,我有以下清单: my_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7] 然后我用这个代码把负数加起来: mynb = 0 i = 0 while True: i += 1 if my_list[i] <= 0 and i <= len(my_list): mynb += my_list[i] print(mynb) if i > 100: # avoid infinite loop

我有以下清单:

my_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
然后我用这个代码把负数加起来:

mynb = 0
i = 0
while True:
    i += 1
    if my_list[i] <= 0 and i <= len(my_list):
        mynb += my_list[i]
    print(mynb)
    if i > 100:  # avoid infinite loop
        break
mynb=0
i=0
尽管如此:
i+=1
如果我的列表[i]
和(x代表x,如果x<0)将达到你的目的。
它遍历列表中的所有元素,并在您的条件下添加它们。

sum
是不言自明的。
()
之间的表达式称为生成器,您可以使用它高效地循环。

问题在于,在检查要索引的列表长度之前,让if条件检查值

mylist[i] <= 0

mylist[i]i0
len(l)-1
,因为列表的长度
len(l)
。此外,一个
while
似乎不是一个好的解决方案。不处理索引问题的一个更简单的方法是
for i in range(len(ny_list))
然后处理它。这应该是有效的:
sum(i for i in my_list,如果i<0)
由于循环从未终止而导致错误,因此您继续递增
i
,直到它大于列表中的项数。要“修复”您的代码,您可以颠倒条件的顺序并更改
i您可以写入
和(如果x
x<0
,则x代表l中的x。少一个字符。:)
i <= len(mylist)
for item in my_list:
    if item <= 0:
        mynb += item