enumerate
是一个内置的 Python 函数,用于将一个可迭代对象(如列表、元组、字符串等)组合为一个索引序列,同时列出数据和数据下标。
参数说明:
enumerate(iterable, start=0)
接受两个参数:iterable
:必需,一个可迭代的对象,如列表、元组、字符串等。start
:可选,开始计数的索引,默认为 0。
返回值:
enumerate
函数返回一个迭代器,每次迭代都会产生一个包含索引和对应元素(或字符)的元组。
用途:
- 在循环中同时获取索引和值:特别是在需要对列表、元组等进行遍历时,需要同时获取索引和元素值,这时
enumerate
可以提供一种便捷的方式。 - 方便创建字典:可以通过
enumerate
生成一个字典,将索引作为键,元素作为值。 - 处理需要索引信息的场景:如根据索引位置更新数据、跟踪位置等。
def check_array(arr):for i, value in enumerate(arr):if i in (8, 18): # 第9和第19个元素,因为索引是从0开始assert 1 <= value <= 2, f"Element at index {i} ({value}) is not within the range of 1 to 2."else:assert 3 <= value <= 4, f"Element at index {i} ({value}) is not within the range of 3 to 4."# 示例用法
array1 = [3.5] * 20 # 生成一个包含 20 个元素,每个元素都是 3.5 的数组
array1[8] = 1.5 # 将第9个元素设为 1.5
array1[18] = 1.7 # 将第19个元素设为 1.7check_array(array1) # 不会触发异常,因为第9和第19元素在范围内,其余元素也在范围内array2 = [3.5] * 20 # 生成一个包含 20 个元素,每个元素都是 3.5 的数组
array2[8] = 2.5 # 将第9个元素设为 2.5,不在要求范围内check_array(array2) # 会触发 AssertionError,因为第9个元素不在范围内
check_array()
函数遍历数组arr
中的每个元素,使用enumerate()
函数获取元素的索引和值。- 如果索引是 8 或 18(第9和第19个元素),则使用
assert
语句检查这些元素是否在 1 到 2 的范围内。 - 对于其他索引位置的元素,检查其是否在 3 到 4 的范围内。
- 如果任何元素不符合指定的范围要求,
assert
语句会触发AssertionError
异常,并显示相应的错误消息。