三元表达式、列表推导式和递归函数的亮点剖析

1.三元表达式

三元表达式等同于三目表达式,就是简单的if......else.....控制器的语法糖。

# 就是if....else的语法糖

cmd = input('cmd:>>>>>')
if cmd.isdigit():
    print('可以转换为数字')
else:
    print('不可以装换为数字')

# 前提是只有一条语句
print('keyi') if cmd.isdigit() else print('no')

# 得到两个数中最大值

a = 30
b = 20
res = a if a > b else b
print(res)

# 三元运算符的结果不一定要和条件有 直接性 关系 按照绣球
msg = b if a > b else a
print(msg)


def max(a, b):
    res = a if a > b else b
    return res


msg = max(12, 5)
print(msg)

2.列表(元组)推导式

列表(元组)推导式,就是列表(元组)和字典类型之间的转换。

dic = {'a': 1, 'b': 2, 'c': 3}

# 列表、元组和字典之间的转换的语法糖
res = [(k, v) for k, v in dic.items()]
print(res)       # 输出结果为:[('a':1),('b':2),('c':3)]
print('====================================')
ls = [('a', 1), ('b', 2), ('c', 3)]
res = {k: v for k, v in ls}
print(tuple(res))   # 输出结果为: ('a','b','c')
print('====================================')
print(res)  # 输出结果为:[('a':1),('b':2),('c':3)]
print('====================================')
# 案例
res = [age for age in range(1, 10)]
print(res)   # 输出结果为: [1,2,3,4,5,6,7,8,9]
print('====================================')
#
res = {'a': age for age in range(1, 10)}
print(res)  # 输出结果为: {'a':9}
print('====================================')
#
p = [3, 4, 5, 62, 5, 6, 7]
res = {k: v for k, v in enumerate(p)}
print(res) # 输出结果为:(0:3,1:4,2:5,3:63,4:5,5:6,6:7)
print('====================================')
#
l1 = [1, 2, 3, 4, 5, 6]
res = {res for res in l1}
print(res) # 输出结果为: [1,2,3,4,5,6]

3.递归函数

递归函数:回溯:询问答案的过程

       递推:推出答案的过程

# 前提:****
# 回溯到一个有具体的结果的值,开始递推
# 回溯和递推的条件要有规律


# 递归本质就是函数的自我调用
def a():
    pass


def b():
    pass


def c():
    pass

递归案例:

# 询问第一个人年龄,回溯条件小两岁,第5个人说出自己的年龄
# 推导出第一个人的年龄

def get_age(num):
    if num == 1:
        return 58
    age = get_age(num - 1) - 2
    return age


res = get_age(5)
print(res)       # 输出结果为: 50

# 递归函数的使用
# 5! = 5*4!
# 4! = 4*3!
def favtorial(num):
    if num == 1:
        return 1
    return num * favtorial(num - 1)


res = favtorial(5)
print(res)      # 输出结果为: 120

4.匿名函数

# 匿名函数就是没有名字的函数

def func(x,y,z=1):
    return x+y+z

# 匿名函数的写法,使用lambda关键字

func = lambda x,y,z=1:x+y+z

func(1,2,3)


# 既然是匿名函数,如果有名字了那么就没有意思了。

# 没有函数名,没有函数体的。
f = lambda x, y: x + y
print(f)
print(f(10, 20))

res = max(10, 20, 30, 50)
print(res)


def fn(v):
print(v)
return v


ls = [20, 100, 200, 50]
res = max(ls, key=fn)
print(res)

 

posted on 2019-04-04 19:45  程序小王的生命周期  阅读(247)  评论(0编辑  收藏  举报

导航