课程名称:全面系统Python3.8入门+进阶(程序员必备第二语言)
课程章节:7-2 for与for-else循环
主讲老师:7七月
课程内容:
今天学习的内容包括:
for与for-else循环
课程收获:
for循环和while循环在使用场景上有什么不同。
for 主要是用来遍历/循环,序列或者集合、字典。
# for循环格式 for target_list in expression_list pass
EG:依次打印列表内元素。
a = ['apple', 'orange', 'banana', 'grape'] for x in a: print(x)
代码块内还可以再嵌套代码块
EG:打印子列表里面的元素
a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)] for x in a: for y in x: print(y)
EG:在一行内打印
a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)] for x in a: for y in x: print(y,end='')
EG:for和else搭配使用
a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)] for x in a: for y in x: print(y) else: print('fruit is gone')
当我们所有列表的元素被打印出来后,最末尾的时候fruit is gone被打印出来。
不同于while else循环,当列表里面的元素都被遍历完了之后,这个else就会被执行。
如果我想强行终止for循环要怎么做?
a = [1,2,3] for x in a: if x == 2: break print(x) # 强行终止当前循环,并且之后循环不在执行
这段代码执行后会不会打印3,同时2会不会被打印出来?
答案是不会,一旦for循环遇到break语句之后,这个循环就立刻结束了。他不会去执行break后面的代码,包括下次的循环,下下次的循环都不会去执行。所以2不会被打印,这段代码的执行结果只会显示1。
在某些情况下,我只想跳过X==2。依然想把x==3打印出来。
# 在某些情况下,我只想跳过X==2。依然想把x==3打印出来 a = [1,2,3] for x in a: if x == 2: continue print(x)
# 之前当for循环值班完之后会执行else内print,现在加入了break后,else还会执行吗 a = [1,2,3] for x in a: if x == 2: continue print(x) else: print('EOF')
如果你的for循环不是正常结束的,就是不是让他遍历完之后结束的,而是通过强制的break打断的,是不会执行else里面的语句。
使用continue是会执行else里面的语句。
# 使用continue 会执行else之后的语句 a = [1,2,3] for x in a: if x == 2: continue print(x) else: print('EOF')
EG:
a = [['apple', 'orange', 'banana', 'grape'], (1,2,3)] for x in a: for y in x: if y == 'orange': break print(y) else: print('fruit is gone')
为什么我们加入了break,上面的代码还会打印出else语句?我们从orange开始break了,为什么后面的1,2,3会被打印出来