函数 三元表达式 列表生成式 字典生成式 生成器表达式

1、三元表达式

针对 if  条件判断的简写

可以比较下比如:

def max2(x,y):
    if x > y:
        return x
    else:
        return y
max2(20,30)
=================================================
x=10
y=20
res=x if x > y else y
print(res)

真正的核心代码从4条变成了一条就可以解决了

代码形式:条件成立时的返回值    if 条件    else 条件不成立时的返回值


2、 列表生成式

也是简写代码的一种

咱们按照上面的套路举例

names=['jxx','yxx','cxx']
#这是咱们之前学过的知识运用
l=[]
for name in names:
    if name != 'yxx':
        l.append(name + 'SB')
names=l
#列表生成式
names=[name+'SB' for name in names if name != 'yxx']
print(names)

代码形式: [  所要执行的代码  左边   for 循环 右边  if 判断]


3、字典生成器

在说字典解释器之前我先介绍下一个函数 

zip()称之为拉链函数  故名思意 就是把两个元素  链在一起

s1='hello'
l1=[1,2,3,4,5]

res=zip(s1,l1)
#而res在python3中不是一个值而是一个迭代器对象
print(res)
print(list(res))
生成的是
[('h', 1), ('e', 2), ('l', 3), ('l', 4), ('o', 5)]

接下来我们来演示字典生成器

keys=['name','age','sex']
values=['egon',18,'male']
#常规的代码
d={}
for k,v in zip(keys,values):
    d[k]=v
print(d)
#字典生成器的代码
d={k:v for k,v in zip(keys,values)}
print(d)

显示的是
{'name': 'egon', 'age': 18, 'sex': 'male'}

4、生成器表达式

本身就是迭代器 

l=['egg%s' %i for i in range(100)]
 print(l)
这个会直接把值全部打印出来 如果数据过大 会导致内存吃不消

g=('egg%s' %i for i in range(1000000000000))
print(g)#迭代器对象
print(next(g))
print(next(g))
一个一个取出来

猜你喜欢

转载自www.cnblogs.com/zuozhengjun/p/9178884.html