day14 生成器表达式,列表推导式 以及 部分内置函数
1 小知识点
l1=[1,2,3,] from collections import Iterable from collections import Iterator print(isinstance(l1,Iterable)) #检验l1的数据类型是不是可迭代的数据类型 print(isinstance(l1,Iterator)) #检验l1的数据类型是不是迭代器 print(isinstance(l1,list)) #检验是不是列表 true flase true
今日主要内容:
列表推导式
1好处 节省代码 一行搞定
2缺点 不好拍错
3整体 凡是用列表推导式构造的类表对象, 用其他方式都可以搞定
非常复杂的列表 列表推导式是做不出来的
l3=[ "技师%s号" % w for w in range(0,16)] print(l3) l4=["护士%s号" % w for w in range(1,14,2)] print(l4) l5=["护士%s号" % w for w in range(15) if w%2==1] print(l5)
分类
[变量(加工后的变量) for 变量 in iteable] 循环模式
[变量(加工后的变量) for 变量 in iteable] if 条件] 筛选模式
print(l) l1=[i*i for i in range(31) if i%3==0] print(l1) l2=[i for i in range(101) if i%2==1] print(l2)
2生成器表达式
l1 = ['python%s期' % i for i in range(1,14)] print(l1) g_obj = ('python%s期' % i for i in range(1,14)) # 循环模式 g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 循环模式 print(g_obj) #拿到的是这个列表的内存地址 只能通过__next__来一项一项拿出 print(g_obj.__next__()) print(g_obj.__next__()) print(g_obj.__next__()) print(g_obj.__next__()) for i in g_obj1: print(i)
1生成器函数 ,有yield
2生成器表达式
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] l2 = [name for i in names for name in i if name.count('e') == 2] l1 = [] for i in names: for name in i: if name.count('e') == 2: l1.append(name) print(l1) print(l2)
mcase = {'a': 10, 'b': 34} print({mcase[i]: i for i in mcase})