参考链接: enumerate(iterable, start=0)
返回一个枚举对象。
iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。
enumerate() 返回的迭代器的 __next__() 方法返回一个元组,
里面包含一个计数值(从 start 开始,默认为 0)
和通过迭代 iterable 获得的值。
Python官网教程实例:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
# 等价于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
动手实验演示:
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
>>> friends = ['yzb','cjh','zh','lzq']
>>> list(enumerate(friends))
[(0, 'yzb'), (1, 'cjh'), (2, 'zh'), (3, 'lzq')]
>>> for idx,friend in enumerate(friends):
print(idx,friend)
0 yzb
1 cjh
2 zh
3 lzq
>>>
>>> list(enumerate(friends,20200910))
[(20200910, 'yzb'), (20200911, 'cjh'), (20200912, 'zh'), (20200913, 'lzq')]
>>> for idx,friend in enumerate(friends,start=20200910):
print(idx,friend)
20200910 yzb
20200911 cjh
20200912 zh
20200913 lzq
>>>
>>>
>>> # 自定义等效的枚举函数
>>> def enumerate4cxq(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
>>> friends = ['尹增宝','陈金涵','赵昊','林祖泉']
>>> list(enumerate4cxq(friends))
[(0, '尹增宝'), (1, '陈金涵'), (2, '赵昊'), (3, '林祖泉')]
>>> for idx,friend in enumerate4cxq(friends):
print(idx,friend)
0 尹增宝
1 陈金涵
2 赵昊
3 林祖泉
>>>
>>> list(enumerate(friends,20200910))
[(20200910, '尹增宝'), (20200911, '陈金涵'), (20200912, '赵昊'), (20200913, '林祖泉')]
>>> for idx,friend in enumerate(friends,start=20200910):
print(idx,friend)
20200910 尹增宝
20200911 陈金涵
20200912 赵昊
20200913 林祖泉
>>>
>>>
>>>