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})

  

 

posted @ 2018-06-20 15:28  山东张铭恩  阅读(122)  评论(0编辑  收藏  举报