算法题常用内置函数

1 累计计算函数

  1. reduce函数
    将一个二元函数(接受两个参数的函数)应用于一个可迭代对象(如列表),从左到右对元素进行累积计算,最终得到一个单一的值。
from functools import reduce
reduce(function, iterable[, initializer])

function:一个接受两个参数的函数。
iterable:一个可迭代对象,如列表、元组等。
initializer(可选):初始值。

eg:累加

from functools import reduce

def add(x,  y):
    return x + y

s = [1, 2, 3, 4, 5]
res = reduce(add, s)
print(res)
# 15
  1. accumulate 函数
    accumulate函数也用于累积计算,但它返回的是一个迭代器,其中每个元素表示从左到右的累积结果。它的语法如下
from itertools import accumulate

accumulate(iterable[, func])

iterable:一个可迭代对象,如列表、元组等。
func(可选):一个接受两个参数的函数,用于指定累积操作。默认为加法。

eg:累乘

from itertools import accumulate
def multi(x, y):
    return x * y

numbers = [1, 2, 3, 4, 5]
result = list(accumulate(numbers, multi))
print(result)  # 输出:[1, 2, 6, 24, 120]

二分函数

1)bisect_left函数
找到在有序列表中,保持列表排序状态的情况下,目标值应该插入的位置,使得所有小于目标值的元素都在其左侧。
具体表现为:返回第一个大于等于目标值的位置

  1. bisect_right函数
    找到在有序列表中,保持列表排序状态的情况下,目标值应该插入的位置,使得所有大于目标值的元素都在其右侧。
    具体表现为:返回第一个大于目标值的位置
    eg:
import bisect

numbers = [1, 3, 4, 4, 6, 8]

# bisect_right example
print(bisect.bisect_right(numbers, 4))  # 输出: 4,因为4应该插入到索引4的位置,即在最后一个4的右侧

# bisect_left example
print(bisect.bisect_left(numbers, 4))   # 输出: 2,因为4应该插入到索引2的位置,即在第一个4的左侧
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。