内置函数
在学习内置函数的时候,最好通过help来熟悉一下函数的属性,例如:
print(help(filter))
filter
过滤
filter(怎么过滤,要过滤的对象)
返回的是一个可迭代对象
# filter 过滤 从可迭代对象中筛选满足条件的元素
def filter_test():
return filter(lambda x:x>2,[1,2,3]) # 筛选出大于2的数字
# return filter(None, [1, 2, 3]) # None 对[1,2,3]不做任何操作
if __name__ == '__main__':
for value in filter_test():
print(value)
map
映射
map(如何映射,[映射对象1,映射对象2,映射对象3…])
返回的是一个map对象
# map 映射 map对象是一个迭代器
def map_test():
return map(lambda x: (2 * x + 2), [1, 2, 3]) # 对[1, 2, 3]中的每一个元素,做2 * x + 2的处理
if __name__ == '__main__':
for value in map_test():
print(value)
实现两个数组的值相加:
# 普通代码实现
def map_test():
nums1 = [1, 2, 3, 4]
nums2 = [10, 20, 30, 40]
result = []
for i, value1 in enumerate(nums1):
result.append(value1 + nums2[i])
return result
# 使用map实现
def map_test():
nums1 = [1, 2, 3, 4]
nums2 = [10, 20, 30, 40]
return list(map(lambda num1, num2: num1 + num2, nums1, nums2))
reduce
reduce可以将上一个的结果当做下一个的值进行操作。
需要导包
from functools import reduce
def reduce_test():
# 累加功能 :1-5累加 [1,2,3,4,5] ==>((((1+2)+3)+4)+5)
def f(x, y):
result = x + y
return result
print(reduce(f[1, 2, 3, 4, 5]))
zip
压缩,把若干个可迭代对象压缩成一个元祖
print(list(zip('123', 'abc', 'qqq')))
装饰器
直接源码:
"""
需求 为字符串添加修饰
hello =》 <i>hello</i>
hello =》 <b>hello</b>
"""
from types import FunctionType
def add_itali(func: FunctionType):
# 接受一个函数,返回一个经过修饰的新函数
def new_func():
return "<i>" + func() + "</i>"
return new_func
def add_bold(func):
# 接受一个函数,返回一个经过修饰的新函数
def new_func():
return "<b>" + func() + "</b>"
return new_func
@add_bold # 语法糖
def text():
return "hello"
if __name__ == '__main__':
print(text())