三元表达式、列表推导式、生成器表达式

一、三元表达式

def max2(x,y):
    if x > y:
        return x
    else:
        return y

# res =条件成立时运行的表达式 if 条件 else 条件不成立时运行的表达式
x=11
y=22

res=x*12 if x > y else y*100
print(res)

 

二、列表推导式

#1、示例
egg_list=[]
for i in range(10):
    egg_list.append('鸡蛋%s' %i)

egg_list=['鸡蛋%s' %i for i in range(10)]

#2、语法
[expression for item1 in iterable1 if condition1
for item2 in iterable2 if condition2
...
for itemN in iterableN if conditionN
]
类似于
res=[]
for item1 in iterable1:
    if condition1:
        for item2 in iterable2:
            if condition2
                ...
                for itemN in iterableN:
                    if conditionN:
                        res.append(expression)

#3、优点:方便,改变了编程习惯,可称之为声明式编程

 

三、生成式

l=[]
for i in range(1,6):
    if i > 3:
        l.append(i)

print(l)
# 1、列表生成式
res=[i for i in range(1,6) if i > 3]
print(res)

# 2、集合生成式
res={i for i in range(1,6) if i > 3}
print(res,type(res))

# 3、字典生成式
items=[("name","egon"),('age',18),('gender','male')]
dict(items)
res={k:v for k,v in items if k != "age"}
print(res,type(res))

# 4、生成器表达式
res = (i for i in range(1, 6) if i > 3)
print(res)

print(next(res))
print(next(res))
print(next(res))

def my_sum(nums,res=0):
    for num in nums:
        res+=num
    return res

 

四、了解部分

1、map函数
salaries=[1000,2000,3000,4000,5000]
res=map(lambda num:num*12,salaries)
print(res)
print(list(res))

print((num*12 for num in salaries))

2、filter函数
names=['egon',"alex_dsb","liuqingzheng_dsb"]
res=filter(lambda n:n.endswith("dsb"),names)
print(res)

print([name for name in names if name.endswith('dsb')])

3、reduce函数
from functools import reduce

res=reduce(lambda x,y:x+y,[1,2],100)
print(res)
了解:map、filter、reduce

 

posted @ 2020-08-15 14:11  sean_wang  阅读(189)  评论(0编辑  收藏  举报