python-可迭代对象/迭代器/生成器


#可迭代对象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 真值表达式] )

猜你喜欢

转载自www.cnblogs.com/chenlulu1122/p/11921818.html