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

一、三元表达式

1
2
3
4
5
6
7
8
9
10
11
12
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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、优点:方便,改变了编程习惯,可称之为声明式编程

 

三、生成式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 @   sean_wang  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
阅读排行:
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· 用99元买的服务器搭一套CI/CD系统
· Excel百万数据如何快速导入?
· ShadowSql之.net sql拼写神器
点击右上角即可分享
微信分享提示