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

Posted zuozhengjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数 三元表达式 列表生成式 字典生成式 生成器表达式相关的知识,希望对你有一定的参考价值。

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))
一个一个取出来

 

以上是关于函数 三元表达式 列表生成式 字典生成式 生成器表达式的主要内容,如果未能解决你的问题,请参考以下文章

递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法

三元表达式,列表生成式,字典生成式,生成器表达式

十一函数递归,算法二分法,三元表达式,列表字典生成式,匿名函数,内置函数

三元表达式,列表推导式和字典生成式

三元表达式,列表推导是,字典生成式