导读:
本文主要记录自己学习python3基础中可迭代对象、迭代器和生成器的要点知识和例子;仅供自己梳理。
哈哈哈,相信看完这个概念你还是不知道什么是可迭代对象。
for i in 10:
print(i)
# 判断你的基本数据类型可否迭代
from collections.abc import Iterable
# 判断字符串'abc'是否为可迭代对象
print(isinstance('abc',Iterable))
# 判断列表[1,2,3]是否为可迭代对象
print(isinstance([1,2,3],Iterable))
# 判断元组((1,2,3)是否为可迭代对象
print(isinstance((1,2,3),Iterable))
# 判断字典{'name':'wdxq'}是否为可迭代对象
print(isinstance({'name':'ydxq'},Iterable))
# 判断int整数1是否为可迭代对象
print(isinstance(1,Iterable))
data = '123456'
# iter()可将data转换为迭代器
it = iter(data)
# 访问迭代器中的数据
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
data = '123456'
# iter()可将data转换为迭代器
it = iter(data)
# 访问迭代器中的数据
print(next(it))
print(next(it))
print(next(it))
#
for i in it:
print(i)
这个问题我们往下看。
# L是一个可迭代对象
L = [9,5,2,7]
for x in L:
print(x)
else:
print('循环结束')
# L是一个可迭代对象
L = [9,5,2,7]
# 使用iter()函数把可迭代对象变成迭代器
it = iter(L)
#
while True:
# try关键字里面放入可能出错的代码
try:
# 使用next()函数获取迭代器中数据
print(next(it))
# 如果出现错误,就执行except里面的语句块
except StopIteration:
print('循环结束')
break
# 此示例示意生成器函数的定义方法和用法
def my_yield():
print('即将生成9')
yield 9
print('即将生成5')
yield 5
print('即将生成2')
yield 2
print('即将生成7')
yield 7
print('生成结束')
gen = my_yield()
# 生成器函数的调用将返回一个生成器对象,生成器对象是一个可迭代对象
print(gen)
#
#print(list(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
# 生成器表达式 类似于列表推导式
gen = (i for i in range(1,5))
#
print(next(gen))
#
for j in gen:
print(j)
numbers = [10086, 10000, 10010, 9558]
names = ['中国移动', '中国电信', '中国联通']
for t in zip(numbers,names):
print(t)
# 序列赋值
for x,y in zip(numbers,names):
print(y,'客服电话是:',x)
def my_enum(iterable,i=0):
it = iter(iterable)
i = i
n = 0
while n < len(iterable):
a = next(it)
yield (i,a)
i+=1
n += 1
print(list(my_enum(names,1)))
numbers = [10086,10000,10010,9558]
names = ['中国移动','中国电信','中国联通']
def myzip(iter1,iter2):
it1 = iter(iter1)
it2 = iter(iter2)
try:
while True:
a = next(it1)
b = next(it2)
yield (a,b)
except:
pass
for t in myzip(names,numbers):
print(t)
def my_zip(*args):
#print(*args)
# 1.列表元素长度从小到大排序,key按照x进行排序,x是列表元素长度
sort_list = sorted(args,key=lambda x:len(x))
#print(sort_list)
# 2.获取最小列表长度,两种方法
# min_list_logth = len(sort_list[0])
min_logth = min(args,key=lambda x:len(x))
#print(min_logth)
#print(len(min_logth))
data = []
for i in range(len(min_logth)):
b = [args[j][i] for j in range(len(args))]
# i = 0 时,j = 0,1,2,3 args[j][i]:args[0][0],args[1][0],args[2][0],args[3][0]
# i = 1 时,j = 0,1,2,3 args[j][i]:args[0][1],args[1][1],args[2][1],args[3][1]
# i = 2 时,j = 0,1,2,3 args[j][i]:args[0][2],args[1][2],args[2][2],args[3][2]
data.append(b)
print(data)
my_zip([1,2,3],[4,2,2],[1,2,3,4,5],[1,2,3])
# 用到的方法
# sorted()
# min()
# len()