python 函数的多种用法

1. lambda   匿名函数
语法:
变量 = lambda 参数: 返回值
不能完成复杂的操作
2. sorted() 函数
排序:
1. 可迭代对象
2. key=函数, 排序规则
3. reverse, 是否倒序
3. filter() 函数
过滤
1. 函数, 返回True或False
2. 可迭代对象
4. map() 映射函数
1. 函数
2. 可迭代对象



1. lambda 匿名函数
# lambda: 后面是函数体(相当于是return后面的内容)
# a 参数
c = lambda a: a*a       # 一行搞定一个函数, 但是,不能完成复杂的函数操作,c相当于函数名
print(c)        # 相当于访问lambda的函数名
print(c(5))
print(c.__name__)   # 查看函数名,c是一个变量

c = lambda a,b: a+b
print(c(1,2))


2. sorted 函数
lst = [3,34,1,14,5,23,15,25,30,12,41]
lst.sort()
print(lst)  # 结果是顺序
ll = sorted(lst,reverse = True) # 内置函数,返回给你一个新列表, 新列表是被排序的
print(ll)   # 结果是倒序,reverse=True 倒序

# 给列表排序, 根据字符串的长度进行排序
# 根据a的数量进行排序
lst = ["美国往事aaa", "战狼aaaa", "流浪地球aaaaaa", "西洋僵尸aaaaaaaa","飞机大战坦克aaa"]
def func(s):
    # return len(s)    # 根据长度进行排序
    return  s.count("a")         # 返回数字
ret = sorted(lst, key=func) # 内部,把可迭代对象中的每一个元素传递给func ,key表示排序规则,用什么函数排序
#             可迭代对象  函数
print(ret)

# 根据a的数量进行排序(用匿名函数和sorted()函数)
ll = sorted(lst, key=lambda s: s.count("a"))    # 算出a的数量也是根据数字进行排序
print(ll)

# 根据长度进行排序(用匿名函数和sorted()函数)
aa = sorted(lst, key=lambda a:len(a))   # 算出长度也是根据数字进行的排序
print(aa)

# 变量 = sorted(可迭代对象,key=函数名,reverse=True(倒序))
 
 

3. filter 函数

lst = [1,2,3,4,5,6,7,8,9]   # 判断奇数
def func(a):
    return a % 2 == 1  # 必须是True,False,是True留下该元素

aa = filter(func, lst)      # aa是迭代器  第二个参数必须是可迭代对象
# 第一个参数, 函数, 将第二个参数中的每一个元素传给函数,函数如果返回True,留下该元素
print("__iter__" in dir(aa))    # 判断是否可迭代
print("__next__" in dir(aa))    # 判断是否是迭代器
print(list(aa))

a = filter(lambda a:a % 2 == 1, lst)
for i in a: # a 是一个迭代器
    print(i)

4. map 映射函数

lst = [1,2,3,4,5,6,7,8,9]
def func(i):
    return  i*i
# map() 是 映射函数  对数据进处理
a = map(func,lst)       # a是迭代器
print(list(a))

print(list(map(lambda a:a*a, lst))) # 把可迭代对象中的每一个元素传递给前面的函数进行处理,
#   处理的结果会返回

lst1 = [1,2,3,4,5]
lst2 = [2,4,6,8,]

it = map(lambda x,y: x+y, lst1,lst2)
print(list(it))     # 如果函数中有多个参数, 后面对应的列表要一一对应, 跟zip一样,跟最少的进行相加.

5. filter和map的区别:

lst = [
    {"电影":'钢铁侠', "name":"小明", "age":18},
    {"电影": "复仇者联盟",'name':"小黄", "age":38},
    {"电影":"美国往事",'name':"小天", "age":48},
    {"电影":'上海堡垒', "name":"小王","age":58},
    {"电影":'战狼1', "name":"小张", "age":28}
    ]

aa = map(lambda a:a["age"]<40,lst)
print(list(aa))
x = filter(lambda dic:dic["age"]<40,lst)
print(list(x))

# 区别
# filter ,map
# map 可以数据进行比较的时候返回的是True和False
# filter 数据进行比较是True的留下该元素,
# 完毕




猜你喜欢

转载自www.cnblogs.com/Pengdachui-1/p/11587262.html
今日推荐