enumerate函數用于遍歷序列中的元素以及它們的下標。
enumerate函數說明:
enumerate()是python的內置函數
enumerate在字典上是枚舉、列舉的意思
函數原型:enumerate(sequence, [start=0])
功能:將可循環序列sequence以start開始分別列出序列數據和數據下標
即對一個可遍歷的數據對象(如列表、元組或字符串),enumerate會將該數據對象組合為一個索引序列,同時列出數據和數據下標。
舉例說明:
存在一個sequence,對其使用enumerate將會得到如下結果:
start sequence[0]start+1 sequence[1]start+2 sequence[2]......
適用版本:
注意:在python2.6以后新增了start參數
英文解釋:
Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence。
代碼實例:
enumerate參數為可遍歷的變量,如 字符串,列表等; 返回值為enumerate類。
import strings = string.ascii_lowercasee = enumerate(s)print sprint list(e)
輸出為:
abcdefghij[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'), (7, 'h'), (8, 'i'), (9, 'j')]
在同時需要index和value值的時候可以使用 enumerate。
該實例中,line 是個 string 包含 0 和 1,要把1都找出來:
def xread_line(line): return((idx,int(val)) for idx, val in enumerate(line) if val != '0') print read_line('0001110101')print list(xread_line('0001110101'))如果對一個列表,既要遍歷索引又要遍歷元素時,首先可以這樣寫:
list1 = ["這", "是", "一個", "測試"]for i in range (len(list1)): print i ,list1[i]
上述方法有些累贅,利用enumerate()會更加直接和優美:
list1 = ["這", "是", "一個", "測試"]for index, item in enumerate(list1): print index, item>>>0 這1 是2 一個3 測試
enumerate還可以接收第二個參數,用于指定索引起始值,如:
list1 = ["這", "是", "一個", "測試"]for index, item in enumerate(list1, 1): print index, item>>>1 這2 是3 一個4 測試
補充
如果要統計文件的行數,可以這樣寫:
count = len(open(filepath, 'r').readlines())
這種方法簡單,但是可能比較慢,當文件比較大時甚至不能工作。
可以利用enumerate():
count = 0for index, line in enumerate(open(filepath,'r')): count += 1
新聞熱點
疑難解答