📅  最后修改于: 2020-01-17 14:20:19             🧑  作者: Mango
Python中的Iterator是可以与“ for循环”一起使用的任何Python类型。Python列表,元组,字典和集合都是内置迭代器的。这些类型是迭代器,因为它们实现以下方法。实际上,任何想要成为迭代器的对象都必须实现以下方法。
下面是一个简单的Python程序,该程序创建从10到给定限制的迭代器类型。例如,如果limit为15,则打印10 11 12 13 1415。如果limit为5,则不打印任何内容。
# Python代码,展示迭代器使用
# 用户定义的迭代器
class Test:
# 构造器
def __init__(self, limit):
self.limit = limit
# 初始化时调用
def __iter__(self):
self.x = 10
return self
# 在Python 3, 实现 __next__ 方法
def next(self):
# 储蓄当前x的值
x = self.x
# 如果到达末端,停止迭代
if x > self.limit:
raise StopIteration
# 否则不断迭代
self.x = x + 1;
return x
# 打印数字:10 到 15
for i in Test(15):
print(i)
# 什么都不打印
for i in Test(5):
print(i)
输出:
10
11
12
13
14
15
内置迭代器类型的示例:
# 内置迭代器例子
# 迭代一个list
print("list迭代")
l = ["芒果", "for", "芒果"]
for i in l:
print(i)
# 迭代一个tuple (不可变)
print("\nTuple迭代")
t = ("芒果", "for", "芒果")
for i in t:
print(i)
# 迭代string
print("\nString迭代")
s = "芒果"
for i in s :
print(i)
# 迭代dictionary
print("\nDictionary迭代")
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
print("%s %d" %(i, d[i]))
输出:
List迭代
芒果
for
芒果
Tuple迭代
芒果
for
芒果
String迭代
G
e
e
k
s
Dictionary迭代
xyz 123
abc 345