Python --(sorted()排序、filter()筛选、map()映射)函数与lambda函数的配合使用

主要内容:
1、sorted()排序函数
2、filter()筛选函数
3、map()映射函数

一、sorted()排序函数

  • 语法 sorted(iterable ,key=None ,reverse=False)
    • iterable :可迭代对象
    • key :排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数,根据函数运算的结果进行排序
    • reverse :排序规则 , reverse = True 降序 , reverse = False 升序(默认)
lst = [1,5,3,4,6]
lst2 = sorted(lst)
print(lst) # 原列表不不会改变
print(lst2) # 返回的新列表是经过排序的

dic = {1:'A', 3:'C', 2:'B'}
print(sorted(dic)) # 如果是字典. 则返回排序过后的key
  • 和函数配合使用
lst = ['aaa','aaaaaa','aa','a']
#根据字符长短进行排序
def func(n):
	return len(n)

print(sorted(lst,key=func))
  • 和lambda函数配合使用
lst = ['aaa','aaaaaa','aa','a']

#根据字符长短进行排序
print(sorted(lst,key=lambda n : len(n)))


lst1 = [{"id": "1", "age": 20, "name": "xiaoming"}, {"id": "2", "age": 22, "name": "xiaomhon"},
        {"id": "3", "age": 21, "name": "xiaohua"}]
        
#根据lst1中的age,进行排序
print(sorted(lst1, key=lambda n:n['age']))

二、filter筛选函数

  • 语法:filter(function, iterable)
    • funciton :用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后
      根据function返回的True或者False来判断是否保留留此项数据
    • iterable:可迭代对象
lst = [1,2,3,4,5,6,7]
# 筛选所有的偶数
ll = filter(lambda x: x%2==0, lst) 
print(ll)		#返回的是迭代器
print(list(ll))

lst1 = [{"id": "1", "age": 20, "name": "xiaoming"}, {"id": "2", "age": 22, "name": "xiaomhon"},
        {"id": "3", "age": 21, "name": "xiaohua"}]
#筛选lst1中 age比20大的字典列表。
l1 = filter(lambda n: n['age'] > 20, lst1)
print(l1)
print(list(l1))

三、map映射函数

  • 语法:map(function, iterable)
    • 会根据提供的函数对指定序列做映射。
    • 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表
  • 计算列表中每个元素的平方
def square(x):  # 计算平方
    return x *x

lst = [1, 2, 3, 4, 5]
lst1 = map(square, lst)
print(lst1)	#返回迭代器
print(list(lst1))
  • 使用lambda函数
lst = [1, 2, 3, 4, 5]
lst1 = map(lambda n : n*n, lst)
print(list(lst1))

简写:
print(list(map(lambda n : n*n,[1, 2, 3, 4, 5])))
  • 计算两个列表中相同位置的数据的和
lst = [1, 2, 3, 4, 5]
lst2 = [2, 3, 4, 5, 6]

print(list(map(lambda x, y: x + y, lst, lst2)))

大家如果有什么问题可以评论下,互相交流哈。

你可能感兴趣的:(python)