在Python选项卡中添加负数

2024-04-20 06:12:19 发布

您现在位置: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

我已尝试修复此错误,但找不到任何解决方案。你知道吗


Tags: and代码looptruelenifmy错误
2条回答

问题产生于让if条件在检查要索引的列表长度之前检查值。你知道吗

mylist[i] <= 0

之前评估

i <= len(mylist)

造成你的错误。你知道吗

比执行while循环更好的方法是:

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

sum(x for x in l if x < 0)会达到你的目的。 它遍历列表中的所有元素,并将它们添加到您的条件下。 sum是不言自明的。()之间的表达式称为生成器,您可以使用它高效地循环。你知道吗

相关问题 更多 >