range与enumerate的异同与使用
异同
1、range 函数适合用来迭代一系列整数,常用于循环中迭代次数的控制。
2、enumerate 函数常用于同时获取结构性可迭代对象(如列表、字符串)的索引和元素值,返回一个包含 (索引, 元素)
的迭代器。
enumerate函数可以用简洁的代码迭代iterator,而且可以指出当前这轮循环的序号。不要先通过range指定下标的取值范围,然后用下标去访问序列,而是应该直接用enumerate函数迭代。可以通过enumerate的第二个参数指定起始序号(默认为0)。
使用
range
range(stop) # 从 0 开始,到 stop-1 结束
range(start, stop) # 从 start 开始,到 stop-1 结束
range(start, stop, step) # 从 start 开始,步长为 step,到 stop-1 结束
# 生成 0-4 的序列
for i in range(5):print(i) # 输出:0 1 2 3 4# 生成 2-8(不包含8)的序列,步长为2
for i in range(2, 8, 2):print(i) # 输出:2 4 6
enumerate
enumerate(iterable, start=0) # start 为索引起始值,默认为 0
fruits = ['apple', 'banana', 'orange']# 默认索引从0开始
for index, fruit in enumerate(fruits):print(index, fruit)
# 输出:
0 apple
1 banana
2 orange
fruits = ['apple', 'banana', 'orange']# 索引从1开始
for index, fruit in enumerate(fruits, start=1):print(index, fruit)
# 输出:
1 apple
2 banana
3 orange