请教一个Python中for循环的问题
本帖最后由 flyps 于 2017-5-11 06:36 编辑>>> b =
>>> for i in b:
if b != b:
print(i)
Traceback (most recent call last):
File "<pyshell#6>", line 2, in <module>
if b != b:
IndexError: list index out of range
这里会出现索引错误
---------------------------------------------------------------------------
>>> b =
>>> for i in b:
if b != b:
print(i)
1
2
1
2
1
2
>>>
为什么这里就不会出现错误呢?只是列表不同,麻烦解答一下,谢谢!! 没有大神回复一下吗? 因为在程序1里面没有b, b 帮你回答一个问题居然还要我给你鱼币10,你觉得这样有人给你解答么? 我也是觉得啊,帮你回答问题还要给你鱼币
冬雪雪冬 发表于 2017-5-10 13:57
因为在程序1里面没有b, b
感谢回复,程序1出错我可以理解,
我所不能理解的是程序2为会不出错,因为到循环到最后一个数时,i+1是不存在的,应该会出现索引错误才对的 gopythoner 发表于 2017-5-10 15:01
帮你回答一个问题居然还要我给你鱼币10,你觉得这样有人给你解答么?
不好意思,我设置错了,本想回复我,最佳答案我给10鱼币的 flyps 发表于 2017-5-11 06:42
感谢回复,程序1出错我可以理解,
我所不能理解的是程序2为会不出错,因为到循环到最后一个数时,i+1是 ...
在for循环中i的值一直是1或2,i+1为2或3,不会出现索引错误的。 b是列表,而b[]是列表中的元素;
程序1中,当i取出第0个元素1时,b等价于b,但你的列表b只有b、b两个元素,所以会报索引出界错误;
同理,在程序2中,b只会取b、b这两个元素,列表b中有,所以不会报错。
列表和列表元素比较始终不等,所以b != b始终为真。 2个列表中最大的元素都是2,也就是说,当你循环的时候能b能取到的最大值都是b
但是第一个列表只有2个元素,最多只能取得b,连b都没有哪来b?所以,第1个会报错,报错的意识是超出列表范围
第2个列表元素比较多,可以取到b,所以不报错(如果你把第2个列表中元素2换成5,第2个也会报错) 沙发坐等大佬给答案 3楼数得很清楚啊 上面回答的差不多了,我就是来水一帖的。。。 多谢楼上几位的回复,谢谢
页:
[1]