在Python表中添加负数

时间:2018-04-23 15:53:52

标签: 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
        break

我收到了这个错误

  

IndexError: list index out of range

我尝试修复此错误但找不到任何解决方案。

3 个答案:

答案 0 :(得分:2)

sum(x for x in l if x < 0)将达到您的目的。 它遍历列表中的所有元素,并根据您的条件添加它们。 sum是自我解释的。 ()之间的表达式称为生成器,您可以使用它来有效地循环。

答案 1 :(得分:2)

问题来自于在检查您要编制索引的列表的长度之前让if条件检查您的值。

mylist[i] <= 0

之前评估

i <= len(mylist)

导致您的错误。

比做一个while循环更好:

for item in my_list:
    if item <= 0:
        mynb += item

答案 2 :(得分:0)

如果需要使用while循环:

while True:
    i += 1
    if i < len(my_list):
        if my_list[i] <= 0:
            mynb += my_list[i]
    else:
        break