Python学习第九天----生成式,迭代器

快速生成一个列表或者字典的一种方式

列表生成式格式:

​ [元素 元素来源 元素筛选判定] 中间空格隔开

list0 = [i for i in range(10) if i % 2 == 0]
生成十以内偶数序列

字典生成式格式:

​ {键值对(k:v) 键值对来源 键值对筛选}

dict0 = {"A":"a", "B":"b"}
dict1 = {k:v for v, k in dict0.items()}
键值互换

2.生成器(generator)

生成的是一个容器

与列表生成式对比

​ 列表生成式生成数据,如果使用数据时只使用前几个,会造成内存浪费

生成器可以弥补生成式的缺陷,生成的数据不会立即存放在内存,使用时才会把要使用的数据提取到内存

声明方式:

​ (元素 元素来源 元素筛选判定)

扫描二维码关注公众号,回复: 2557510 查看本文章
gene = (i for in range(10000))

​ 类似于方法的声明,return换为yield

def test():
    for i in range(10000):
        yield i

在生成器中获取数据:

​ 通过next方法

def test():
    for i in range(10000):
        yield i
        print(“下一次获取时执行的语句”)
a = test()
print(next(a))
print(next(a))
输出  

3.迭代器

遍历序列的另外一种方式

通过next方法,使指针向下移动获取数据

使用迭代器遍历序列,序列必须是可以迭代的

from collections.abc import Iterator

​ iterator类型,符合这个类型的都可以通过for in进行遍历

from collections.abc import Iterable

​ iterable 类型,可以使用迭代器进行遍历

能使用for in 遍历的不一定可以使用迭代器遍历

如何将可以使用for in 遍历的数据转换为可用迭代器遍历的数据

​ 将数据通过iter()方法转换为iterator类型

ite = iter([1,2,3,4,5])
print(next(ite))

判断是否为某数据类型:

isinstance(value, 数据类型)

 

 

猜你喜欢

转载自blog.csdn.net/qq_33407999/article/details/81412708
今日推荐