Python enumerate() 函数
描述
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
Python 2.3. 以上版本可用,2.6 添加 start 参数。
语法
以下是 enumerate() 方法的语法:
enumerate(sequence, [start=0])
参数
- sequence -- 一个序列、迭代器或其他支持迭代对象。
- start -- 下标起始位置的值。
返回值
返回 enumerate(枚举) 对象。
实例
以下展示了使用 enumerate() 方法的实例:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
普通的 for 循环
>>> i = 0
>>> seq = ['one', 'two', 'three']
>>> for element in seq:
... print i, seq[i]
... i += 1
...
0 one
1 two
2 three
>>> seq = ['one', 'two', 'three']
>>> for element in seq:
... print i, seq[i]
... i += 1
...
0 one
1 two
2 three
for 循环使用 enumerate
>>> seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
叶秋
856***23@qq.com
巧妙利用 enumerate() 批量修改列表内的元素:
输出结果:
叶秋
856***23@qq.com
AK
133***0166@QQ.com
上面的例子举的不合适,要得到想的效果,不如推导式:
输出结果:
AK
133***0166@QQ.com
PortosHan
415***944@qq.com
实现方式不同,还可以使用 map 函数:
PortosHan
415***944@qq.com
ShimaJuan
454***241@qq.com
enumerate() 的好处是任何你想要下标的时候都可以,像一维数组确实用列表表达式很方便,但如果在多维的情况,用 enumerate() 有助于理解。例如要让数组所有数加 1,写出来很直观:
再多层也就是嵌套下来,没有任何障碍,当然列表表达式也不是不行:
用列表表达式在简单场合会更方便。不过如果操作复杂,可能表达式就不好了。
ShimaJuan
454***241@qq.com