【接口自动化测试】Python迭代器, 可迭代对象和循环
一、可迭代对象
判断可迭代对象
3个内置常用函数:filter map reduce
二、Iterator 迭代器
iter() 和 next()
创建迭代器
三、循环
for…in…
range 函数(上一篇公众号文章已写过)
for…else
一、可迭代对象
Python中的可迭代对象基础数据类型有:字符串、列表、元组、字典、集合;
常结合for循环使用
for遍历操作我们称为迭代(Iteration)
a = "hello word"
for i in a:
print(i) #输出每个字母
b = ["hello", "world"]
for j in b:
print(j) #输出每个单词
c = ("hello", "world")
for z in c:
print(z) #输出每个单词
d = {"key": "world", "name": "jiang"}
for key in d:
print(key) #输出字典中key的值
e = {"key": "world", "name": "jiang"}
for key in e.values(): #字典调用
print(key)
e = {"hello", "world"}
for j in e:
print(j)
如何判断是不是可迭代 Iterable 对象?
from collections.abc import Iterable
a = 2
print(isinstance(a, Iterable)) # 判断是不是实例
b = range(5)
print(isinstance(b, Iterable))
# 先判断,后循环遍历
from collections.abc import Iterable
def fun(x):
"""函数返回x"""
return x
res = fun("hello")
if isinstance(res, Iterable):
for i in res:
print(i)
else:
print("不可循环")
输出结果:
二、Iterator 迭代器
可以被 next() 函数调用并不断返回下一个值的对象称为迭代器:Iterator。
list 列表 和迭代器有什么区别?
from collections.abc import Iterable,
Iterator
b = "abc"
new_b = iter(b) #iter() 函数用来生成迭代器。
print(new_b)
print(isinstance(new_b,Iterator))
c = [1,2,3]
print(iter(c))
print(isinstance(new_b,Iterator))
d = (1,2,3)
print(iter(d))
print(isinstance(iter(d),Iterator))
e = {1,2,3}
print(iter(e))
print(isinstance(iter(e),Iterator))
f = {"key":1}
print(iter(f))
print(isinstance(iter(f),Iterator))
与迭代操作相关3个内置函数:filter map reduce
b = '123456'
def fun(item):
return int(item) > 3
b1 = filter(fun,b) #过滤序列
print(b1)
print(list(b1))
x = [1,-3,2,-4,5,7]
def fun(item):
return item ** 2
res = map(fun, x) #会根据提供的函数对指定序列做映射
print(res)
print(list(res))
from functools import reduce
def fun(x,y):
return x * y
res = reduce(fun, range(5,0,-1))
print(res)
输出结果:
创建迭代器:
class MyNumbers:
def __iter__(self): #函数
self.a = 1
return self
def __next__(self):
if self.a <= 3:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
输出结果: 前面三个输出正确结果,最后一个爆出异常。
三、循环:
"""
循环 Python用for遍历list列表
"""
#for遍历取值
books = ["Python 入门", "JavaScript 入门", "SQL 数据库"]
for book in books:
print(book)
输出结果
#for遍历下表
for index in range(len(books)): #不是len(range())
print(index)
print(books[index])
输出结果
#Break 与 continue
# 1. 计算a 中大于5的成员总和
a = [1, 5, 10, 20]
count = 0
for i in a:
if i < 5:
# continue 跳过当前循环,继续下一轮循环
continue
count += i
print("输出count的值:", count)
输出结果
a = [1, 5, 10, 20]
count =0
for i in a:
if i > 5:
#结束
break
count += i
print("输出count的值:", count)
#先定义空的list列表,计算求和
list = [1, 10, 20, 30, 40]
result = []
for i in list:
if i > 5:
#print(i) #输出所有大于1的数字
result.append(i) #把所有大于5的数字,输入到列表中
print(result) #打印出最后的list列表
print(sum(result))
#先定义空的list列表,计算求和
list = [1, 10, 20, 30, 40]
result = []
for i in list:
if i > 5:
#print(i) #输出所有大于1的数字
result.append(i) #把所有大于5的数字,输入到列表中
print(result) #打印出最后的list列表
print(sum(result))