enumerate的用法:
for index,value in enumerate(list,start):
print(index,value)
for 后面的index表示索引值,value表示要打印元素的值。list表示要遍历的对象,start表示索引开始的数值。
其中list可以加切片list[x:y],表示只取list里某个区间的值,比如前10个 list[:10] (虽然右边取不到,但是列表从0开始计数)
!
enumerate()是python的内置函数
enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串、字典、集合),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数
>>> seq=range(5)
>>> enumerate(seq)
<enumerate object at 0x00000000030D5480>
>>> list1 = [('a', 'A'), ('b', 'B'), ('c', 'C')]
>>> for x,y in enumerate(list1,2):
print(x,y)
2 ('a', 'A')
3 ('b', 'B')
4 ('c', 'C')
>>> for x,(y,z) in enumerate(list1[:2]):
print(y,z)
a A
b B
>>> for x,(y,z) in enumerate(list1):
print(y,z)
a A
b B
c C
>>>
>>> for x,(y,z) in enumerate(list1):
print(x,y,z)
0 a A
1 b B
2 c C
>>> for x,(y,z) in enumerate(list1,2):
print(x,y,z)
2 a A
3 b B
4 c C
>>>
比较难的用法:
>>>
list = [
[
['a'],
['b']
],
[
['c'],
['d']
],
[
['e'],
['f']
]
]
>>>
# 两种方式遍历 遍历:从第一个找到最后一个
>>> for x in list:
for y in x:
for z in y:
print(z)
a
b
c
d
e
f
# 这个是上一个的enumerate用法
>>> for x, [[y], [z]] in enumerate(list):
print(y, z)
a b
c d
e f
>>> for x, [[y], [z]] in enumerate(list):
print(x,y, z)
SyntaxError: unexpected indent
>>> for x, [[y], [z]] in enumerate(list):
print(x,y, z)
0 a b
1 c d
2 e f
>>> for x, y in enumerate(list):
print(x,y)
0 [['a'], ['b']]
1 [['c'], ['d']]
2 [['e'], ['f']]
>>>
小心机
>>> for i,j in enumerate({'a','b'}):
print(i,j)
0 b
1 a
>>> for i,j in enumerate(['a','b']):
print(i,j)
0 a
1 b
>>>
补充
如果要统计文件的行数,可以这样写:
count = len(open(filepath, 'r').readlines())
1
这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
可以利用enumerate():
count = 0
for index, line in enumerate(open(filepath,'r')):
count += 1
或者用
>>> count=0
>>> for line in open(r'C:\Users\Administrator\Desktop\20190506biji.txt','r'):
count+=1
print(count)
或者
>>> for index, line in enumerate(open(r'C:\Users\Administrator\Desktop\20190506biji.txt','r')):
count+=1
print(index, line)
其它练习:
>>> s=[(1,2,),(4,2),(8,4),(3,2)]
>>> for x in s :
print(x)
(1, 2)
(4, 2)
(8, 4)
(3, 2)
>>> for x,y in s :
print(x,y)
1 2
4 2
8 4
3 2
>>> for i ,x in enumerate(s):
print(i,x)
0 (1, 2)
1 (4, 2)
2 (8, 4)
3 (3, 2)
>>> for i ,x in enumerate(s):
print(x)
(1, 2)
(4, 2)
(8, 4)
(3, 2)
>>>
参考:
https://jingyan.baidu.com/article/a3aad71a3fff5db1fb00968d.html
https://blog.csdn.net/churximi/article/details/51648388
https://blog.csdn.net/qq_39610888/article/details/80869566