首先来说下for循环,for循环是python语言的循环控制语句,for循环可以遍历任何序列的项目,包括序列集合或可迭代对象,如列表、字符串、元组、字典等。
看下基本语法:
for 变量 in 序列: #变量为任意值,序列为列表、元组、字符串等
子代码模块
比如我们想从一个列表中打印出来每个值,就可以用到for循环:
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #输出结果为:1 2 3 test
#每次只输出一个,因为for循环是遍历列表里的所有值,每遍历一次就输出一个值,然后遍历第二次,当遍历第二次时,变量i的值也会发生变化
第一次循环:从列表中读取到 1 ,把1值赋值给变量 i ,然后进入到子代码中,此时 i 的值为 1,打印出 1 ,然后结束本次for循环,判断列表中还有其他值,开始第二次循环
第二次循环:从列表中读取到 2 ,把2值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 2,打印出2,然后结束本次for循环,判断列表中还有其他值,开始第三次循环
第三次循环:从列表中读取到 3 ,把3值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 3,打印出3,然后结束本次for循环,判断列表中还有其他值,开始第四次循环
第四次循环:从列表中读取到 test ,把test值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 "test",打印出 "test",判断列表中没有值了,结束本次遍历
最后输出的值为:1
2
3
test
如果我们把print(i)加到for循环外,此时打印的结果是什么呢?
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印每次循环的值
print(i) #因为最后一次遍历的值为“test”,所以最后输出的值为 test
最后按个print(i)输出的值为:test
输出的值为:1
2
3
test #上面是for循环每次遍历得到的结果
test #这个是for循环外,打印i得到的结果
如果我们遍历一个字符串是什么样子呢?
for i in ("Atom"): #遍历字符串里的所有值,并把值赋值给变量 i
print(i) #打印的结果为:A
t
o
m
打印出的结果为:A
t
o
m
遍历一个字符串,会把字符串的每个字符都遍历出来
第一次循环:从字符串中读取到 A ,把A值赋值给变量 i ,然后进入到子代码中,此时 i 值为 A,印出 A ,然后结束本次for循环,判断字符串中还有其他值,开始第二次循环
第二次循环:从字符串中读取到 t ,把t值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 t,打印出t,然后结束本次for循环,判断字符串中还有其他值,开始第三次循环
第三次循环:从字符串中读取到 o ,把o值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 o,打印出o,然后结束本次for循环,判断字符串中还有其他值,开始第四次循环
第四次循环:从字符串中读取到 m ,把m值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 m,打印出 m,判断字符串中没有值了,结束本次遍历
现在我们用下range()函数
先说下rang()函数,rang()函数可以创建一个整数列表
range(3)就表示创建一个整数列表(0,1,2) range(5)表示创建一个整数列表(0,1,2,3,4)
for i in range(3): #创建一个整数列表(0,1,2),然后遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印结果为:0
1
2
打印结果为:0
1
2
最后来个for循环和if判断相结合的一个例子:
有一个列表(0,1,2,3),我们想取出列表中小于2的数字,应该怎么办?
这时候就可以先用for循环取出,列表里的每个值,然后再用if判断是否小于2,如果满足就打印出来,如果不满足结束本次循环,再去取第二个值:
for i in range(4): #创建一个列表(0,1,2,3),然后遍历列表中的每个值,赋值给i
if i < 2: #得到列表中的每个值后,去进行判断,如果满足i < 2,就打印出i的值
print(i) #输出的结果为:0 1
第一次循环:从列表中读取到 0 ,把0赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 0,然后去进行if判断,i <2成立,进入到if子代码中,打印出i的值为0 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第二次for循环
第二次循环:从列表中读取到 1 ,把1赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 1,然后去进行if判断,i <2成立,进入到if子代码中,打印出i的值为1 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第三次for循环
第三次循环:从列表中读取到 2 ,把2赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 2,然后去进行if判断,i <2不成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第四次for循环
第四次循环:从列表中读取到 3 ,把3赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 3,然后去进行if判断,i <2成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中没有其他值了,结束本次遍历
总结下for循环就是,去一个个取出序列中的所有值,然后用每个值去进行for循环子代码下的运算,当结束for循环下子代码的运算后,再去判断序列中还有没有其他值,如果存在,再去把值取出,去进行for循环下子代码的运算,直到序列中的所有值,都进行过for循环子代码的运算,然后结束for循环。
下图为公众号二维码,内容会同步发出,大家可以关注一起学习
这个是张狗子小哥哥的公众号,会分享一些平时的工作心得,可以关注看下。