点击上方蓝字 关注我们
2026
在实际编程中,很多操作并不是只做一次,而是需要对大量数据反复执行同样的步骤。例如,对多景遥感影像进行统一处理、对每一个波段进行计算、对时间序列逐年分析等。如果每一步都手工编写,不仅效率低,而且容易出错。循环结构正是为了解决这类“重复劳动”的问题而存在的。
在 Python 中,最常用的循环结构是 for 循环和 while 循环,其中 for 循环尤其适合处理序列型数据,在遥感数据处理中应用极其广泛。
for 循环是 Python 中处理序列数据的主要工具。所谓“序列”,可以是列表、元组、字符串、字典,甚至是由 range() 生成的数字序列。
for 循环的核心思想是:从一个可迭代对象中依次取出元素,对每个元素执行同样的操作。
在遥感领域中,for 循环常用于以下场景:
对多个影像文件进行批量处理;
遍历多光谱影像的各个波段;
逐像元或逐行列进行计算;
对时间序列数据进行逐期分析。
在 Python 中,循环控制语句用于改变循环的正常执行流程。主要包括 break、continue、else 和 pass
Part.01
break 语句
下面我们来一个简单的例子,查找第一个能被 7 整除的数:
for i in range(1, 20):if i % 7 == 0:print(f"找到第一个能被7整除的数:{i}")breakprint(f" {i} 并非能被7整除的数")
通过上述代码,诸位便可以得到如下的结果:

我们没有系统讲过while循环,下面我们来看一个较为简单的while循环中的break,我们可以先观察一下,下面代码的作用是什么?
num = 1while True:print(num)if num >= 5:breaknum += 1
好了我们运行之后便可以看到,是当num=5时跳出,结果如下:

Part.02
continue语句
continue用于跳过本次循环中剩余的代码,直接进入下一次迭代。
好了诸位,我们下面进行一个简单的小训练,我们输出0~10内的奇数,那么我们该如何去做?只需要跳过偶数即可,如下代码:
for i in range(1, 11):if i % 2 == 0:continueprint(i)
如下我们便可以得到0~10内的奇数:

好了我们继续讲一个while中的continue,注意避免死循环:
num = 0while num < 5:num += 1if num == 3:continueprint(num)
如此我们便可以得到跳过num=3的打印,也就是显示为1 2 4 5:

Part.03
else 语句
诸位,我们在日常使用中循环也可以搭配 else 子句,只有当循环正常结束时,else 中的代码才会执行。
我们来一个简单的例子,检查循环的正常结束,执行 else:
for i in range(3):print(i)else:print("循环正常结束,没有遇到 break")
便输出0 1 2 循环正常结束,没有遇到 break:

当然我们来看一个使用 break 退出的例子,即不会执行else
for i in range(5):if i == 2:breakprint(i)else:print("我没有执行else")
我们便输出了0 1

而后我们修改如下:
for i in range(5):if i == 5:breakprint(i)else:print("我执行了else")
试想一下会得到什么结果呢?我们遇到5时跳出循环执行了else语句,结果如下:

下面来讲一个实用的例子,即检查列表中是否包含某个元素?
numbers = [1, 3, 5, 7, 9]target = 4for num in numbers:if num == target:print(f"找到 {target}")breakelse:print(f"没有找到 {target}")
我们输出结果便是:没有找到 4

Part.04
pass 语句
pass 是一个空操作语句,什么都不做。它用作语法占位符,保持代码结构的完整性。
在我们日常模块化编程的时候,往往需要占位来实现后续功能的补充,这里边需要用到占位符,用于暂时留空的代码块。
for i in range(10):pass
通过上述代码的示例,我们便可以以后再实现具体逻辑。
当然我们也可以在函数或类中定义一些空函数、类等等来避免语法上的错误。
def my_function():pass
class MyClass:pass
又或者我们可以将其作为条件语句中的占位符,如下:
num = 10if num > 5:passelse:print("num <= 5")
上述代码中pass处为条件为真时暂时什么都不做
好了我们对其做一个总结对比:

好了以上为基础内容,下面诸位来做一个嵌套循环中的使用:
在此我们要说明的是break 和 continue 只影响最内层的循环,即:
for i in range(3):for j in range(5):if j == 2:breakprint(f"i={i}, j={j}")
我们的输出结果即为i=0,j=0 i=0,j=1 然后换 i=1 ...
由此我们便可以看到break处是只跳出内层循环,不影响外层循环。

当然,诸位如果需要跳出多层循环,可以使用标志变量或封装成函数用return,这里便不再展开介绍。
诸位,我们下面来尝试编写一个程序,使用break在找到质数时停止,用continue跳过偶数,用else检测是否完整遍历所有数,好了这里先思考几分钟,自己动手试试,答案如下:
num = 29if num < 2:print(f"{num} 不是质数")else:if num > 2 and num % 2 == 0:print(f"{num} 是偶数,不是质数")else:for i in range(3, int(num ** 0.5) + 1, 2):if num % i == 0:print(f"{num} 不是质数,能被 {i} 整除")breakelse:print(f"{num} 是质数")
Part.5
总结要点
本章围绕循环控制语句展开,系统介绍了 Python 中用于改变循环执行流程的核心工具及其在遥感数据处理中的典型应用,主要包括以下几个方面。
break 语句用于立即终止整个循环,适用于在遥感数据处理中提前结束查找(如找到第一景有效影像后停止遍历)。
continue 语句用于跳过本次循环的剩余代码,直接进入下一次迭代,适合在像元计算中过滤无效值(如跳过云覆盖像素)或排除特定类型的遥感数据。
else 子句仅在循环正常结束(即未遇到 break)时执行,常用于验证遍历是否完整完成,例如检查是否在所有波段中找到了目标特征、确认时间序列数据完整无缺失。
pass 语句作为空操作占位符,在构建遥感数据处理框架时可用于预留函数接口或条件分支,保持代码结构的完整性而不产生实际效果。
嵌套循环中的控制需注意 break 和 continue 只影响最内层循环,如需跳出多层循环可采用标志变量或函数封装配合 return 实现。
如果你觉得“原来Python也能讲得这么遥感”,点个关注,后续系列推文将第一时间推送:
函数与模块化编程
异常处理
文件与目录操作
正则表达式
NumPy入门
你在处理遥感数据时,遇到过哪些让循环“卡住”的场景?是千万级像元的遍历太慢,还是海量文件的批处理总报错?评论区聊聊,下期可能就针对你的痛点来讲解
用Python讲遥感,我们不讲噱头,只讲干货。
附赠可运行的 Notebook 源码,自行上传即可上手。本公众号后台回复【RS Python入门02-5】即可获取本节 Notebook 源码。