写在前面:
个人认为本文章不错,其摘至:http://hi.baidu.com/xifanwu/item/59b5bd0dcbbc978a02ce1bca,非个人原创。
python之enumerate
一般情况下,如果要对一个列表或者数组既要遍历索引又要遍历元素时,可以用enumerate
比如:
for index,value in enumerate(list):
print index,value
当然也可以
for i in range(0,len(list)):
print i,list[i]
相比较而言,前者更简练
另外一种使用情况,当要计算文件的行数的时候,可以这样写:
lineNum = len(open(fileName,'r').readlines())
不过如果文件巨大,这种方式可能会造成严重问题,比如机器挂掉
这个时候可以使用enumerate,python cookbook里举出了这样的例子
lineNum = -1
for count,line in enumerate(open(fileName,'r')):
print count
lineNum+=1
print lineNum
试过用上面的脚本来统计一个1GB大小的log文件(最后统计出来大约有18000000行),运行脚本的时候,CPU占用率比较高(看来是做计算的比较多),但是脚本用到的内存不多,显示的python占用内存为5M多
不过如果用readlines的方法,内存飙到了200M
比如:
for index,value in enumerate(list):
print index,value
当然也可以
for i in range(0,len(list)):
print i,list[i]
相比较而言,前者更简练
另外一种使用情况,当要计算文件的行数的时候,可以这样写:
lineNum = len(open(fileName,'r').readlines())
不过如果文件巨大,这种方式可能会造成严重问题,比如机器挂掉
这个时候可以使用enumerate,python cookbook里举出了这样的例子
lineNum = -1
for count,line in enumerate(open(fileName,'r')):
print count
lineNum+=1
print lineNum
试过用上面的脚本来统计一个1GB大小的log文件(最后统计出来大约有18000000行),运行脚本的时候,CPU占用率比较高(看来是做计算的比较多),但是脚本用到的内存不多,显示的python占用内存为5M多
不过如果用readlines的方法,内存飙到了200M