为什么我的休息声明不能正常工作,因为它超出了条件?

时间:2017-02-03 23:41:42

标签: python python-3.x

add = lambda x,y : x+y
list1 = [1,2,3,4,5]
count = 0 
for num1 in list1:
    if count > len(list1):
        break
    else:
        print(add(num1,list1[count+1]))
        count += 1

在上面的代码中,为什么for循环没有因为超出条件而中断?

4 个答案:

答案 0 :(得分:2)

实际上,您不需要break语句(也不需要 lambda表达式)。您可以将代码写为:

list1 = [1,2,3,4,5]

for i in range(len(list1)-1):
    print list1[i] + list1[i+1] 

在这里使用zip更好:

for a, b in zip(list1, list[1:]):
    print a+b

答案 1 :(得分:1)

for循环在list1中每个元素执行一次,因此count永远不会大于该列表的长度。

答案 2 :(得分:0)

我想留下代码,更改if语句:

if count >= len(list1) - 1:

并且在用完

中列表的边界之前会中断
print(add(num1,list1[count+1]))

答案 3 :(得分:0)

错误在这一行:

print(add(num1,list1[count+1]))

当你使用count + 1时,你会陷入一个超出范围的索引。

为了保持逻辑,您应该使用count + 1 >= len(list1)

for num1 in list1:
    if count + 1 >= len(list1):
        break
    else:
        print(add(num1,list1[count + 1]))
        count += 1