#可迭代对象iterable
能够被for /对象所属类里面有 def __iter__(self)方法
for原理:
for i in list1:
print(i)
iterable=list1.__iter__()
while True:
try:
i=iterable.next()
print(i)
except StopIteration:
break
#迭代器对象iterator
能调用next()方法的
class 迭代器类名:
def __init__(self, 聚合对象):
self.聚合对象= 聚合对象
def __next__(self):
if 没有元素:
raise StopIteration
return 聚合对象元素
class SkillIterator:
"""
技能迭代器
"""
def __init__(self, data):
self.__target = data
self.__index = -1
def __next__(self):
if len(self.__target) - 1 == self.__index:
raise StopIteration()
# 返回下一个数据
self.__index += 1
return self.__target[self.__index]
生成器:可迭代对象+迭代器 配合使用
#python内置生成器函数
enumerate
for 变量 in enumerate(可迭代对象): #变量是元组(索引, 元素)
语句
for 索引, 元素in enumerate(可迭代对象):
语句
zip
for item in zip(可迭代对象1, 可迭代对象2….): #变量是元组 (对象1元素,对象2元素....) 以最短可迭代对象为准
语句
生成器表达式:
变量 = ( 表达式 for 变量 in 可迭代对象 [if 真值表达式] )