共计 1877 个字符,预计需要花费 5 分钟才能阅读完成。
一、map&reduce
-
概述
Python 内建了 map() 和 reduce() 函数
-
map() 函数
原型:map(fn, lsd)
参数:
fn:是一个函数
lsd:集合
功能:将传输的函数 fn 依次作用到 lsd 集合中的每个元素,并把结果作为一个 Iterator 返回
myList = [1,2,3,4,5] def my_func(arg): return arg**2 res = map(my_func,myList) print(list(res)) print(tuple(res)) print(set(res)) # 使用 lambda 表达式来实现 res = map(lambda x:x**2,myList) print(list(res)) # 使用内置数据类型转换函数实现 res = map(int,['1','2','3','4','5']) res = map(bool,[0,'1','2','3','','4',(),{},'5']) print(list(res))
-
reduce() 函数
原型:reduce(fn, lsd)
参数:
fn:一个函数
lsd:集合功能:传入的 fn 函数作用在 lsd 集合中,这个 fn 函数必须接收两个参数,reduce 把结果继续和序列中的下一个元素做累积运算
from functools import reduce # 进行值的累加 def add(x,y): print(x,y) return x+y """ 1 2 3 3 6 4 10 5 15 """ my_list = [1,2,3,4,5] # res = reduce(add,my_list) # 使用 lambda 表达式实现 res = reduce(lambda x,y:x+y,my_list) print(res)
-
reduce&map 组合使用案例
from functools import reduce # 将字符串的 '12345' 变成整形的 12345 print(reduce(lambda x,y:x*10+y,list(map(lambda x:int(x),list('12345'))))) """ 12345 1+2 1*10+2 3+3 12*10+3 6+4 123*10+4 10+5 1234*10+5 12345 """
二、filter
原型:filter(fn, lsd)
参数:
fn:函数
lsd:集合
功能:用于过滤列表,把传入的 fn 函数依次作用在 lsd 集合中的每个元素上,然后根据返回 True 还是 False 决定是否保留该元素
li = [1,2,3,4,5,6,7,8,9,10]
# def func1(arr):
# for x in arr:
# if x % 2 == 0:
# arr.remove(x)
# func1(li)
def func2(num):
if num % 2 == 0:
return False
return True
res = filter(func2, li)
print(res)
print(list(res))
print(li)
删除列表中是空字符串的元素
li2 = ["a", "", "", "c", "", " bsg "]
def f(item):
return item and item.strip()
res = filter(f, li2)
print(list(res))
三、sorted
-
排序算法
冒泡排序、快速排序、选择排序,计数器排序等
-
效率
在数据量小时冒泡和快速没有什么区别,但是当处理大量数据时快速排序的效率明显高于冒泡排序
-
冒泡算法原理
1 2 3 4 5 -> 5 4 3 2 1 1 2 3 4 5 -> 2 1 3 4 5 -> 2 3 1 4 5 -> 2 3 4 1 5 -> 2 3 4 5 1 0 1 1 2 2 3 3 4 2 3 4 5 1 -> 3 2 4 5 1 -> 3 4 2 5 1 -> 3 4 5 2 1 3 4 5 2 1 -> 4 3 5 2 1 -> 4 5 3 2 1 4 5 3 2 1 -> 5 4 3 2 1
li = [1,2,3,4,5] for i in range(len(li) - 1): for j in range(len(li) - i - 1): if li[j] < li[j+1]: temp = li[j] li[j] = li[j+1] li[j+1] = temp print(li)
-
sorted() 函数
原型:sorted(lsd, key=func)
参数:
lsd:集合
key:规定排序的规则
功能:将 led 中的每个元素作用在 key 函数上,用函数的结果的大小来排序
优点:可以自定义排序规则def func(x): return ord(x[2]) li2 = ["awaefweg","sgeweg3","sgwrtwe","wr2","ergstrhrt"] # li3 = sorted(li2, key=len, reverse=True) li3 = sorted(li2, key=func, reverse=True) print(li2) print(li3)
正文完
星哥玩云-微信公众号