一、定义及作用
1、定义:for循环跟while循环一样是重复某流程的一种机制。
2、作用:类似于while循环的功能,但是在循环取值,也称遍历取值方面,要比while循环简洁,所以也俗称取值循环。
二、具体使用
1、基本语法:
'''
for 变量名 in 可迭代对象(列表、字典、字符串、元组、集合):
代码1
代码2
代码3
'''
2、列表,字典,字符串的取值情况:
①列表:变量名从左往右依次遍历列表中元素,每次循环被赋值为该元素的值。
a = [1, 2, 3] # 列表中有3个元素
for x in a: # 循环3次
print(x) # 结果为依次为 1 2 3
②字典:变量名从左往右依次遍历字典中元素,每次循环被赋予该元素的key值。
a = {'b': 1, 'c': 2, 'd': 3} # 字典中有3个元素
for x in a: # 循环3次
print(x, a[x]) # 结果依次为 b 1 c 2 d 3
③字符串:便令名从左往右依次遍历字符串中每单个字符,每次循环被赋予该单个字符的值。
a = 'qwe r' # 字符串中有5个单个字符(空格也为字符)
for x in a: # 循环5次
print(x) # 结果为 q w e r
④补充:for循环中每次循环虽然变量名被赋值,但有时未必需要打印该变量,可以进行其他操作。
for x in [1,2,3]: # 循环3次
print('其他操作') # 每次循环运行的代码
3、for循环与while循环的异同:
①相同之处:都是循环,有时可以互换。
②不同之处:
Ⅰ:while:根据条件循环,所以循环次数取决于条件合适为假。
Ⅱ:for:每次循环依次取值,所以循环次数取决于in后面包含的可取值的个数。
4、for循环与range:
①range基本功能:range(整型数字):放在for循环的in后面,相当于遍历了一个从0开始,总数为该数字的自然数列表。
for x in range(3): # 相当于遍历了列表[0,1,2]
print(x) # 结果为 0 1 2
②range之限头限尾:
for x in range(2, 5): # 从自然数列表的2号索引开始遍历到4号索引
print(x) # 结果为 2 3 4
③range之步长:
for x in range(1, 10, 3): # 从自然数列表的1号索引开始,每次加3,遍历到9号索引
print(x) # 结果为 1 4 7
④range搭配len功能:可以使用len得到某列表的元素数量,利用此数量搭配range可以按索引取列表的值,但是此法比较麻烦,不推荐使用。
l = ['a', 'b', 'c'] # 列表有3个元素
for x in range(len(l)): # 通过len返回元素数量3
print(l[x]) # 结果为 a b c
⑤range在python2与python3中的区别:
Ⅰ:python2中:通过range(),会生成一个真的列表。
Ⅱ:python3中,通过range(),不会真的生成一个列表,而是相当于生成了一个不占很多内存空间的中间人,每次需要取值时,才会从列表中拿出对应值。
5、for循环与break:理同while循环。除了正常遍历完结束只有通过break这一种手段可以终止其循环进程。
for x in range(5): # 循环5次
if x == 2:
break # 当遍历过程中,x取值为2时,即在第三次循环时,立即终止循环
print(x) # 结果为 0 1
6、for循环与else:理同while循环。
for x in range(3): # 循环3次
print(x)
else:
print('循环3次完成') # for循环体中没有出现被break打断的情况结束则执行此代码
7、for循环与continue:与while循环略有区别。
for x in range(5): # 循环5次
if x == 3: # 当x取值为3的那次循环执行到此处,会执行if判断的子代码
continue # 子代码为continue立即开始下次循环,不执行本次循环的后续代码,但因为for循环依次取值的特性,循环进度不受子代码continue的影响
print(x) # 结果为 0 1 2 4
8、for循环嵌套:外层循环每一次循环体中的子循环会完整遍历一遍。
for x in range(3): # 外层共循环3次
print('A')
for y in range(3): # 子循环每次3次
print('a') # 结果为A a a a A a a a A a a a
三、相关拓展之print相关使用:
1、print之逗号使用:print括号中的内容若中间加上逗号,则逗号两边的内容会被被空格分开输出。
print('a', 'b', 'c') # 结果为 a b c
2、print之换行符与end参数:print括号中的内容会被默认为在结尾加上了换行符\n,若要去除换行符,需要使用end功能重新定义结尾参数。
print('i am ') # 结尾默认为换行符\n,所以不会与下一行代码在同一行输出
print('chinese')
print('i am ', end='') # 用end功能将结尾定义为空,则可会与下一行代码在同一行输出
print('chinese')
# 结果为 i am chinese
print('以星号结尾', end='*') # 用end功能将结尾定义为*,所以结果为 以星号结尾*