如何在Python中使用循环找出给定列表中两个数字的最小差值(不使用def、sorted、return及导入语句)
解决无受限语句的列表最小差值问题
没问题,咱们不用那些受限的工具来实现这个功能!既然不能用sorted()、函数定义或者导入语句,那咱们就手动遍历每一对数字,逐个比较差值,记录最小的那个就行。
实现代码
# 目标数字列表 arr = [4, 1, 2, 9, 7, 100, 5, 0, 99, 100] # 初始化最小差值为一个极大的数,确保任何实际差值都能比它小 min_diff = 10 ** 20 # 外层循环:逐个取列表中的元素作为第一个比较数 for i in range(len(arr)): # 内层循环:只和当前元素之后的元素比较,避免重复计算同一对 for j in range(i + 1, len(arr)): # 计算两数的绝对值差(忽略正负,只看数值差距) current_diff = abs(arr[i] - arr[j]) # 如果当前差值比记录的最小值更小,更新最小值 if current_diff < min_diff: min_diff = current_diff # 输出最终结果 print(f"The lowest difference between two numbers is {min_diff}")
代码解释
- 初始化最小差值:用
10**20这个极大值作为初始值,保证第一次比较时,任何实际的数字差值都会替换掉它。 - 嵌套循环遍历所有数对:外层循环遍历每个元素,内层循环从外层元素的下一个位置开始,这样不会重复比较同一对数字(比如不会既比较4和1,又比较1和4),减少不必要的计算。
- 绝对值差计算:用
abs()获取差值的绝对值,因为我们只关心两个数的差距大小,正负不影响结果。 - 实时更新最小差值:每次计算出当前数对的差值后,和
min_diff比较,更小的话就更新min_diff。
运行这段代码,你会得到和示例一样的输出:The lowest difference between two numbers is 0。
内容的提问来源于stack exchange,提问作者Richard Coterie
相关产品推荐
相关产品推荐

