enumerate的簡單總結
首先,enumerate()是python的一個內置函數。
語法:
enumerate(sequence, [start=0])
參數:
sequence – 一個序列、迭代器或其他支持迭代對象。
start – 下標起始位置。
返回值:
返回 enumerate(枚舉) 對象
1enumerate()對於一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
2返回一個計數器和元素值。計數器默認爲0,也是元素的索引。如果不想在0開始你的計數,只需要使用可選start參數來設置偏移量。
3通過for循環得到enumerate裏的索引計數。
a.將可迭代對象(Iterable)組成一個索引序列:
list1 = ['a','b','c','d']
for index, item in enumerate(list1):
print index, item
>>>
0 a
1 b
2 c
3 d
b.迭代器(Iterator)組成一個索引序列:
generator_ex = (x*x for x in range(10))
print(list(enumerate(generator_ex)))
>>>
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81)]
c.改變索引起始值:
list1 = ['a','b','c','d']
for index, item in enumerate(list1,start=100):
print index, item
>>>
100 a
101 b
102 c
103 d
擴展:
文件統計行數:
count = len(open(filepath, 'r').readlines())
上述操作,對於相對比較小的文件可以使用該方法,可是對於數據量相當大的文件就不適用了,否則會造成速度緩慢甚至不能正常工作。
count = 0
for index, line in enumerate(open(filepath,'r')):
count += 1
使用enumerate() 函數遍歷文件,在以count作爲累加器,求得文件行數。open函數相當於創建了一個迭代器,這樣消耗的內存數量將大大減小。
一個關於程序員雜談的公衆號,歡迎關注!
有不足之處望留言指正
——————END——————
Programmer:柘月十七