快速生成一个列表或者字典的一种方式
列表生成式格式:
[元素 元素来源 元素筛选判定] 中间空格隔开
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)
生成的是一个容器
与列表生成式对比
列表生成式生成数据,如果使用数据时只使用前几个,会造成内存浪费
生成器可以弥补生成式的缺陷,生成的数据不会立即存放在内存,使用时才会把要使用的数据提取到内存
声明方式:
(元素 元素来源 元素筛选判定)
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, 数据类型)