我有这个清单:
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
我尝试修复此错误但找不到任何解决方案。
答案 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