目录
- 三元表达式
- 匿名函数
- reduce函数
- map函数
- filter函数
- 用字典映射代替switch,case语句
三元表达式
类似于c语言或其他语言中的三元表达式,但其表示方法不同。
表示方法: 条件为真时返回的结果 if 条件判断 else 条件为假时返回的结果
x = 2
y = 1
r = x if x>y else y
print(r)三元表达式的返回结果一般都是简短句,但如果想要用复合句,可以使用函数。
def x(a):
return a*a
def y(a):
return a**3
r = x(1) if 1>2 else y(2)
print(r)匿名函数
语法格式:lambda 参数 :表达式
salaries = { # 字典
'eqon' : 3000,
'alex' : 100,
'wu' : 200
}
f = lambda k : salaries[k] # 定义一个匿名函数,f接收返回值
print(f) # 输出f类型:为函数类型
print(f('eqon')) # 把‘eqon’传入函数里,并在字典里使用‘eqon’名得到值
# 输出3000reduce函数
作用:会对参数序列中元素进行积累运算(连续计算)。
用法: 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数function(至少有两个参数),先对集合中的第1, 2个元素进行操作,得到的结果再于第三个数据用function函数进行运算,最后得到一个结果。
from functools import reduce # 引入reduce函数
list_x = [1, 2, 3, 4, 5, 6, 7]
r = reduce(lambda x, y : x+y, list_x) # lambda函数必须要有两个参数,且计算结果赋给x
print(r)
r1 = reduce(lambda x, y : x+y, list_x, 10) # 默认初始值为10
print(r1)
# 输出 28, 38map函数
map函数接收两个参数,一个是函数,一个是数据集合(链表,元组等)。map将传入的函数依次作用到序列的每个元素,并把结果作为新的值返回。(原数据集合与新数据集合具有一一映射关系)
list_x = [1, 2, 3, 4, 5, 6, 7]
def square(x):
return x*x
r = map(square, list_x)
print(list(r)) # 返回值为列表,固要用list转换
# 输出[1, 4, 9, 16, 25, 36, 49]filter函数
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中。
list_x = [1, 0, 1, 0, 1]
r = filter(lambda x: True if x==1 else False, list_x)
print(list(r))
# 输出[1, 1, 1]用字典映射代替switch,case语句
由于字典里名和值具有一一对应的关系,类似与case语句中的值与表达式,顾可以用字典映射来代替switch,case语句。需要用到get函数。
get函数:
描述:get函数返回指定键的值,如果值不在字典中,则返回默认值。
语法:字典 . get(key, default = None)
key为字典中要查找的键, default为如果指定的值不存在时, 返回该默认值。
day = input()
switcher = { # 建立一个字典
0 : get_sunday
1 : get_monday
2 : get_tuesday
}
def get_sunday():
return 'Sunday'
def get_monday():
return 'Monday'
def get_tuesday():
return 'Tuesday'
def get_default():
return 'Unknow'
day_name = switcher.get(day, get_default)()
print(day_name)
最后,感谢观众老爷的浏览,下面是卖小邪的微信号,希望有志同道合的码友能够加下,也更希望有业界大佬来指导小憨憨的编程之路!!!
感谢感谢
