1,enumerate()使用介绍
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
语法:
enumerate(sequence, [start=0])
- sequence – 一个序列、迭代器或其他支持迭代对象。
- start – 下标起始位置的值。
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
- enumerate()返回的是一个enumerate对象
seq = ['one', 'two', 'three']
for index, item in enumerate(seq):
print (index, item)
2,迭代器
迭代是python中访问集合元素的一种非常强大的一种方式。迭代器是一个可以记住遍历位置的对象,因此不会像列表那样一次性全部生成,而是可以等到用的时候才生成,因此节省了大量的内存资源。迭代器对象从集合中的第一个元素开始访问,直到所有的元素被访问完。迭代器有两个方法:iter()和next()方法。
类似于list、tuple、str 等类型的数据可以使用for …… in…… 的循环遍历语法从其中依次拿到数据并进行使用,我们把这个过程称为遍历,也称迭代。python中可迭代的对象有list(列表)、tuple(元组)、dirt(字典)、str(字符串)set等
除此之外,也可以创建一个可迭代的对象:只要此对象含有__iter__方法,那么它就是一个可迭代的对象,如下面的例子:其中定义了一个__iter__方法,我们通过isinstance()函数以及Iterable来判断由Classmate类创建的class1对象是否是可迭代的对象:若class1是一个Iterable(可迭代对象)则结果返回为True;否则,结果为False。
from collections import Iterable
class Classmate(object):
"""定义一个同学类"""
def __init__(self):
self.name = list()
self.name_num = 0
def add(self,name):
self.name.append(name)
def __iter__(self):
pass
class1 = Classmate()
class1.add("张三")
class1.add("李四")
class1.add("王五")
print("判断是否是可迭代的对象:", isinstance(class1,Iterable))
dic = {'a':1, 'b':2} # 可迭代对象dic
s = iter(dic) # 本质就是在调用dic.__iter__(),返回dic的迭代器对象s
print(next(s)) # 输出:a
print(next(s)) # 输出:b