Python实用小技巧
1.Map函数
Map函数是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,他它的格式大致如下
def add(x):
return x * x
l = [1, 2, 3]
print(list(map(add, l))
map第一个参数接收的是一个函数,第二个参数是一个列表。然后组成一个新的元素进行返回。如果熟悉lamda表达式的朋友,可以写的更加简单一点,直接写成成下面这样的写法。
l = [1, 2, 3]
print(map(lambda x: x * x, l))
2.reduce函数
reduce
函数需要传入一个有两个参数的函数,然后用这个函数从左至右顺序遍历序列并生成结果,定义如下:
reduce(function, sequence[, initial]) -> value
function
# 函数, 序列中的每个元素需要执行的操作, 可以是匿名函数sequence
# 需要执行操作的序列initial
# 可选,初始参数
使用方式如下
from functools import reduce
r = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(r)
---->15
我们可以直接看到,reduce函数对列表进行了累加。还有一种附带初始值的情况
from functools import reduce
s = reduce(lambda x, y: x + y, ['1', '2', '3', '4', '5'], "数字 = ")
print(s)
---->数字 = 12345
3.filter 函数
filter()
函数用来过滤序列中不符合条件的值,返回一个迭代器,该迭代器生成那些函数(项)为 true 的 iterable 项。如果函数为 None,则返回为 true 的项。定义如下:
filter(function or None, iterable) --> filter object
function or None
# 过滤操作执行的函数iterable
# 需要过滤的序列
这里来一个简单的demo,比如说,我们要选出列表中,所有的偶数,可以写成这样
s = filter(lambda n: n % 2 == 0, list(range(20)))
print(list(s)
----> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
4.sorted函数
sorted
函数默认将序列升序排列后返回一个新的 list,还可以自定义键函数来进行排序,也可以设置 reverse
参数确定是升序还是降序,如果 reverse = True
则为降序。函数定义如下:
def sorted(iterable: Iterable[_T], *,
key: Optional[Callable[[_T], Any]] = ...,
reverse: bool = ...) -> List[_T]: ...
iterable
# 序列key
# 可以用来计算的排序函数。reverse
# 排序规则,reverse = True 降序,reverse = False 升序(默认)。
举个简单例子:
list01 = [5, -1, 3, 6, -7, 8, -11, 2]
list02 = ['apple', 'pig', 'monkey', 'money']
print(sorted(list01))
# print out: [-11, -7, -1, 2, 3, 5, 6, 8]
print(sorted(list01, key=abs))
# print out: [-1, 2, 3, 5, 6, -7, 8, -11]
# 默认升序
print(sorted(list02))
# print out: ['apple', 'money', 'monkey', 'pig']
# 降序
print(sorted(list02, reverse=True))
# print out: ['pig', 'monkey', 'money', 'apple']
# 匿名函数排序
print(sorted(list02, key=lambda x: len(x), reverse=True))
# print out: ['monkey', 'apple', 'money', 'pig']
5.回调函数
在Python中,我们可以把函数,作为参数传递给另外一个函数,让其他函数来调用这个函数。列如
def callback(n):
return n * 2
def fun(call, x):
return call(x)
print(fun(callback, 2))
-----> 4
从这里我们可以看到,我把callback作为一个参数传给了fun函数,fun函数返回的时候再调用这个回调方法,将结果进行返回。在传入回调方法的时候,我们直接将函数名传入即可,使用时,按照正常的函数使用流程使用即可。