大榔头

导航

踩坑学习python自动化测试第一天!

这只是一个标题,

 

#  迭代器与生成器
# 迭代器有两个基本的方法:iter() 和 next()。

# 字符串,列表或元组对象都可用于创建迭代器:
"""
list1 = [1, 2, 3, 4]
it = iter(list1) # 创建迭代器对象
print(next(it)) # 输出迭代器的下一个元素
"""

# 迭代器对象可以使用常规for语句进行遍历:
"""
import re
import string

list2 = [1, 2, 3, 4]
it = iter(list2) # 创建迭代器对象
for x in it:
print(x, end=" ")
"""

# 也可以使用 next() 函数
""""
import sys # 引入 sys 模块


list3 = [1, "-2", "3****", 4, 9.99]
it = iter(list3) # 创建迭代器对象

while True:
try:
print(next(it))
except StopIteration:
sys.exit()
"""

# 创建迭代器
"""


class MyNumbers:
def __iter__(self):
self.a = 1
return self

def __next__(self):
x = self.a
self.a += 1
return x

def __init__(self):
m1 = [1234567890, "abcdefghijklmnopqrstuvwxyz"]
self.b = m1
# return m1


myclass = MyNumbers()

myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))




"""

# 创建一个迭代器
"""
# 使用反斜杠 \ 来抵消因多行文本导致的错误,不使用反斜杠会导致变量的定义值是错误的。
doc1 = (
"把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。\
如果你已经了解的面向对象编程,\
就知道类都有一个构造函数,\
Python 的构造函数为 __init__(), \
它会在对象初始化的时候执行。\
更多内容查阅:\
Python3 面向对象__iter__() 方法返回一个特殊的迭代器对象, \
这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。\
__next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。\
创建一个返回数字的迭代器,初始值为 1,逐步递增 1:"
)

# 正则去空格方法,需要导入re 方法。
print(re.sub(' ', '', doc1))
# print(re.split(pattern, string[, maxsplit=0, flags=0]),doc1) # 错误,引用的方法导致的错误


class MyNumbers:
def __iter__(self):
self.a = 1
return self

def __next__(self):
x = self.a
self.a += 1
return x


myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
"""

# StopIteration 异常迭代表达式
"""


class MyNumbers:
def __iter__(self):
self.a = 1
return self

def __next__(self):
if self.a <= 20: # 这个参数决定循环到多少为止,指定在什么时候停止循环。
x = self.a
self.a += 1
return x
else:
raise StopIteration


myclass = MyNumbers() # 将类转换为一个方法?还是将一个类转化为一个变量参数
myiter = iter(myclass) # 将变量转成一个可供循环使用的类型


for x in myiter:
print(x)
"""

# 生成器

"""
# 280,571,172,992,510,140,037,611,932,413,038,677,189,525
# 173,402,521,172,797,813,159,685,037,284,371,942,044,301
import sys


def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1


f = fibonacci(200) # f 是一个迭代器,由生成器返回生成

while True:
try:
print(next(f), end=" ") # end ="" 是让输出的时候同一行输出,
except StopIteration:
sys.exit()

"""

print(pi)

posted on 2019-04-03 10:32  大榔头  阅读(206)  评论(0编辑  收藏  举报