-
average
返回两个或多个数字的平均值。
def average(*args):
return sum(args, 0.0) / len(args)
示例
average(*[1, 2, 3]) # 2.0
average(1, 2, 3) # 2.0
-
average_by
使用提供的函数将每个元素映射到一个值后,返回列表的平均值。
def average_by(lst, fn=lambda x: x):
return sum(map(fn, lst), 0.0) / len(lst)
示例
average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n']) # 5.0
-
clamp_number
在边界值a和b所指定的范围之内钳制num。如果num在该范围内,则返回num。否则,返回范围内最接近的数字。
def clamp_number(num,a,b):
return max(min(num, max(a,b)),min(a,b))
示例
clamp_number(2, 3, 5) # 3
clamp_number(1, -1, -5) # -1
-
digitize
将数字转换为数字数组。
def digitize(n):
return list(map(int, str(n)))
示例
digitize(123) # [1, 2, 3]
-
factorial
计算数字的阶乘。
def factorial(num):
if not ((num >= 0) and (num % 1 == 0)):
raise Exception(
f"Number( {num} ) can't be floating point or negative ")
return 1 if num == 0 else num * factorial(num - 1)
示例
factorial(6) # 720
-
fibonacci
生成一个数组,其中包含斐波那契序列,直到第n项。
def fibonacci(n):
if n <= 0:
return [0]
sequence = [0, 1]
while len(sequence) <= n:
next_value = sequence[len(sequence) - 1] + sequence[len(sequence) - 2]
sequence.append(next_value)
return sequence
示例
fibonacci(7) # [0, 1, 1, 2, 3, 5, 8, 13]
-
gcd
计算数字列表的最大公约数。
from functools import reduce
import math
def gcd(numbers):
return reduce(math.gcd, numbers)
示例
gcd([8,36,28]) # 4
-
in_range
检查给定数字是否在给定范围内
def in_range(n, start, end = 0):
if (start > end):
end, start = start, end
return start <= n <= end
示例
in_range(3, 2, 5); # True
in_range(3, 4); # True
in_range(2, 3, 5); # False
in_range(3, 2); # False
-
is_divisible
检查第一个数字参数是否可被第二个参数整除。
def is_divisible(dividend, divisor):
return dividend % divisor == 0
示例
is_divisible(6, 3) # True
-
is_even
如果给定数字为奇数,则返回True,否则返回False。
def is_odd(num):
return num % 2 != 0
示例
is_odd(3) # True
-
is_odd
如果给定数字为奇数,则返回True,否则返回False。
def is_odd(num):
return num % 2 != 0
示例
is_odd(3) # True
-
lcm
返回两个或多个数字的最小公倍数。
from functools import reduce
import math
def spread(arg):
ret = []
for i in arg:
if isinstance(i, list):
ret.extend(i)
else:
ret.append(i)
return ret
def lcm(*args):
numbers = []
numbers.extend(spread(list(args)))
def _lcm(x, y):
return int(x * y / math.gcd(x, y))
return reduce((lambda x, y: _lcm(x, y)), numbers)
示例
lcm(12, 7) # 84
lcm([1, 3, 4], 5) # 60
-
max_by
使用提供的函数将每个元素映射到一个值后,返回列表的最大值。
def max_by(lst, fn):
return max(map(fn,lst))
示例
max_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 8
-
median
查找数字列表的中位数。
def median(list):
list.sort()
list_length = len(list)
if list_length%2==0:
return (list[int(list_length/2)-1] + list[int(list_length/2)])/2
else:
return list[int(list_length/2)]
示例
median([1,2,3]) # 2
median([1,2,3,4]) # 2.5
-
min_by
使用提供的函数将每个元素映射到一个值后,返回列表的最小值。
def min_by(lst, fn):
return min(map(fn,lst))
示例
min_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 2
-
rads_to_degrees
将角度从弧度转换为度。
import math
def rads_to_degrees(rad):
return (rad * 180.0) / math.pi
示例
import math
rads_to_degrees(math.pi / 2) # 90.0
-
sum_by
使用提供的函数将每个元素映射到一个值后,返回列表的总和。
def sum_by(lst, fn):
return sum(map(fn,lst))
示例
sum_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda v : v['n']) # 20