一、Iterable可迭代类型
可迭代对象就像是一个装着东西的盒子,您可以一个一个地把里面的东西拿出来看。
比如,像我们常见的列表 [1, 2, 3]
、元组 (4, 5, 6)
、字符串 "Hello"
,它们都是可迭代对象。
当您想一个一个地处理这些对象里的元素时,就可以使用 for
循环进行遍历。比如:
for num in [1, 2, 3]:
print(num)
解释:这里的 [1, 2, 3]
就是可迭代对象,for
循环会依次取出里面的 1
、2
、3
,然后执行 print(num)
这部分代码。
二、for两种常见形式
1.遍历一个可迭代对象(如列表、元组、字符串等):
# 遍历列表
my_list = [10, 20, 30, 40, 50]
for num in my_list:
print(num) # 结果:10, 20, 30, 40, 50
# 遍历元组
my_tuple = ('apple', 'banana', 'orange')
for fruit in my_tuple:
print(fruit) # 结果:apple,banana,orange
# 遍历字符串
my_string = "Hello"
for char in my_string:
print(char) # 结果:H e l l o
2.通过 range()
函数生成一个数字序列来控制循环次数 :
# 基本用法
for i in range(5):
print(i) # 结果:0 1 2 3 4
# 指定起始值和结束值
for j in range(2, 8):
print(j) # 结果:2 3 4 5 6 7
# 指定起始值、结束值和步长
for k in range(1, 10, 2): # range(起始值,结束值,步长)
print(k)
# 结果:1 3 5 7 9
解释:
-
for i in range(5)
: 这里的range(5)
会生成一个包含 0、1、2、3、4 的数字序列。所以循环会依次让i
取到这些数字,然后执行循环体中的print(i)
,从而依次输出 0、1、2、3、4 。 -
for j in range(2, 8)
:range(2, 8)
会生成一个从 2 开始(包括 2),到 8 结束(不包括 8)的数字序列,即 2、3、4、5、6、7。循环会让j
依次取到这些数字并输出。 -
for k in range(1, 10, 2)
:range(1, 10, 2)
表示从 1 开始(包括 1),到 10 结束(不包括 10),步长为 2。生成的数字序列是 1、3、5、7、9 。循环中k
会依次取到这些数字并输出。
总结:range()
函数通过不同的参数设置,可以灵活地控制 for
循环的次数和取值范围。
三、break 与 continue
在 Python 中,break
和 continue
是用于控制循环流程的关键字。
1.break
break
关键字用于立即终止当前所在的循环结构,即跳出整个循环,不再执行循环中剩余的语句。
for num in range(1, 10):
if num == 5:
break
print(num)
解释:在上述代码中,使用 for
循环从 1 迭代到 9 。当 num
的值等于 5 时,执行 break
语句,此时整个循环立即终止,不再继续执行后续的迭代。所以,最终只会输出 1 到 4 。
2.continue
continue
关键字用于跳过当前循环中的剩余语句,直接开始下一次循环。
for i in range(10):
if i % 2 == 0:
continue
print(i)
解释:在这个例子中,当 i
是偶数时,执行 continue
语句,跳过本次循环中后续的 print(i)
语句,直接进行下一次循环。也就是说,只会输出奇数。
四、for与else
在 Python 中,for
循环可以和 else
搭配使用。else
子句中的代码会在 for
循环正常结束后执行(即没有被 break
语句中断)。
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 6:
print("找到 6 了!")
break
else:
print("没有找到 6")
解释:在上述代码中,遍历 numbers
列表中的每个元素。如果在循环过程中找到了 6,就会执行 break
语句跳出循环,此时不会执行 else
子句中的代码;如果循环正常结束,都没有找到 6,那么就会执行 else
子句中的代码,输出"没有找到 6"。
以下是一个在 for
循环中使用 break
并结合 else
的示例代码:
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
print("找到 3 了!")
break
else:
print("没有找到 3")
解释:当遍历到数字 3 时,执行 break
语句跳出 for
循环,此时不会执行 else
子句中的代码。如果在整个循环过程中都没有遇到 3 ,导致循环正常结束,那么就会执行 else
子句中的代码。
五、循环嵌套
在 Python 中,for
循环嵌套 for
循环是一种常见的编程结构。
当一个 for
循环出现在另一个 for
循环内部时,就形成了嵌套。外层的 for
循环每执行一次,内层的 for
循环就会完整地执行一轮。
# 打印9*9乘法表
for i in range(1, 10):
for j in range(1, 10):
if i >= j:
print(f"{j}*{i}={i * j}", end=" ")
print("")
这段代码使用了两层嵌套的 for 循环来打印 9*9 乘法表。
外层的 for 循环 for i in range(1, 10) 负责控制乘法表的行数,i 从 1 递增到 9 。内层的 for 循环 for j in range(1, 10) 负责控制每行乘法运算的个数。
在循环体内部,通过条件判断 if i >= j 来决定是否打印乘法表达式。只有当行号 i 大于或等于列号 j 时,才打印出乘法表达式 {j}*{i}={i * j} ,并且每个表达式之间用空格分隔 end=" " 。当内层的 for 循环结束后,执行 print("") 实现换行,从而开始打印下一行的乘法运算。