一.Iterable 可迭代类型
任何可以被for...in...
循环遍历的对象都是Iterable
可迭代类型。一般情况下str 和 range 最为常见被用于在for in 循环中。
判断一个对象是否是可迭代类型,可以使用collections.abc
模块中的Iterable
抽象基类。
from collections.abc import Iterable
# 示例
my_list = [1, 2, 3]
print(isinstance(my_list, Iterable)) # 输出: True
my_string = "hello"
print(isinstance(my_string, Iterable)) # 输出: True
my_number = 123
print(isinstance(my_number, Iterable)) # 输出: False,因为整数不是可迭代的
二.for 的两种常见形式
在Python中,for
循环是一种常用的迭代结构,用于遍历任何序列(如列表、元组或字符串)或其他可迭代对象(如字典的键或值、集合、文件对象等)。for
循环的基本语法允许你针对序列中的每个元素执行一段代码块。
基本语法
for 变量 in 可迭代对象:
# 缩进块: 对每个元素执行的代码
# 可以在这里使用变量
示例
遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 输出:
# apple
# banana
# cherry
遍历字符串
s = "hello"
for char in s:
print(char)
# 输出:
# h
# e
# l
# l
# o
遍历字典的键和值
遍历字典的键:
d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
print(key)
# 输出:
# a
# b
# c
同时遍历字典的键和值:
for key, value in d.items():
print(key, value)
# 输出:
# a 1
# b 2
# c 3
使用range()
range()
函数常用于生成一个整数序列,常用于for
循环中控制循环次数。
for i in range(5): # 相当于从0到4
print(i)
# 输出:
# 0
# 1
# 2
# 3
# 4
你还可以指定range()
函数的起始值和步长:
for i in range(1, 10, 2): # 从1开始到9(不包括),步长为2
print(i)
# 输出:
# 1
# 3
# 5
# 7
# 9
三.打断循环好帮手 break
和 continue
在Python中,break
和continue
是两个用于控制循环流程的关键字,它们可以在for
循环和while
循环中使用。
break
break
语句用于立即退出当前所在的循环体(无论是for
循环还是while
循环),而不再执行循环中剩余的语句。当遇到break
时,循环将立即终止,并且控制权将传递给紧跟在循环之后的语句(如果有的话)
for i in range(1, 6):
if i == 3:
break # 当i等于3时,退出循环
print(i)
# 输出:
# 1
# 2
示例
# 随机输出最多10个10到20的数如果输出的数有15 则中断循环
for i in range(10):
num = random.randint(10, 20)
print(num)
if num == 15:
break
else:
print("没有15")
continue
continue
语句用于跳过当前循环的剩余语句,并继续下一次循环迭代(如果有的话)。continue
语句之后的任何语句在当前迭代中都不会被执行,循环将直接跳到下一次迭代的开始。在以后学习中用的比较少,作用比较小,就不过多赘述了。
for i in range(1, 6):
if i % 2 == 0:
continue # 如果i是偶数,则跳过剩余语句,继续下一次迭代
print(i)
# 输出:
# 1
# 3
# 5
四.for 和 else
在Python中,for
循环可以与一个可选的else
子句结合使用,但这种用法可能与你在其他编程语言中遇到的if-else
结构有所不同。在Python的for
循环中,else
子句在循环正常结束(即没有遇到break
语句)时执行。如果循环因为break
语句而提前终止,则不会执行else
子句中的代码。
语法
for 变量 in 可迭代对象:
# 循环体
# 如果需要,可以使用break来提前退出循环
else:
# 循环正常结束时执行的代码
示例
没有break的情况
在这个例子中,for
循环正常结束,因此执行了else
子句中的代码。
for i in range(1, 6):
print(i)
else:
print("循环正常结束")
# 输出:
# 1
# 2
# 3
# 4
# 5
# 循环正常结束
有break的情况
在这个例子中,当i
等于3时,break
语句导致循环提前终止,因此没有执行else
子句中的代码。
for i in range(1, 6):
if i == 3:
break
print(i)
else:
print("循环正常结束")
# 输出:
# 1
# 2
# 由于i等于3时执行了break,因此不会打印"循环正常结束"
五. 循环嵌套
Python中的循环嵌套指的是在一个循环体内再嵌套另一个循环。这种结构在处理需要多维迭代的情况时非常有用,比如遍历二维数组(列表的列表)、矩阵、或者在处理具有层级结构的数据时。
深入理解break
和continue
语句在嵌套循环中的行为是很重要的,因为它们可以帮助你控制循环的流程。
示例
它往往帮助我们解决复杂问题时用到,例如:寻找1000以内所有质数。
# 外层循环控制value值的变化
for value in range(2, 1001):
# 内层循环实现判断value是不是质数
for i in range(2, value):
if value % i == 0:
break
else:
print(f'{value}是质数')
可以自行运行此代码帮助你更好的了解循环嵌套和break的用法。
留一个简单的问题:输入数字n 求n的阶乘和 5的阶乘和 =5!+4!+3!+2!+1!自行作答。
通过循环嵌套,可以处理多维的数据结构或者执行更复杂的重复操作。
总之,熟练掌握这些循环相关的知识和技巧,对于编写高效、准确的 Python 程序至关重要。
制作不易,请多多三连。