码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-06-13 18:08:33      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:打印   def   比较   lis   res   条件判断   内存   ==   迭代器   

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

 

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

标签:打印   def   比较   lis   res   条件判断   内存   ==   迭代器   

原文地址:https://www.cnblogs.com/zuozhengjun/p/9178884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!