如何无需for循环或lambda函数实现列表元素的公式运算与批量乘法?
解决方法
针对你的需求,这里提供两种不使用for循环和lambda函数的实现方式:
方法一:利用functools.partial与operator.mul
通过functools.partial固定乘法操作的第一个参数(也就是你计算出的系数),再用map将这个乘法操作应用到列表的每个元素上:
import functools import operator integer_list = [1, 2, 3, 4] # 计算系数:第一个元素代入公式(x*5)+1 coeff = (integer_list[0] * 5) + 1 # 用系数乘以列表每个元素 result = list(map(functools.partial(operator.mul, coeff), integer_list)) print(result) # 输出: [6, 12, 18, 24]
方法二:使用numpy数组的广播特性
numpy的数组支持广播运算,标量和数组相乘时会自动作用到数组的每个元素上,全程无需循环或lambda:
import numpy as np integer_list = [1, 2, 3, 4] # 转换为numpy数组 arr = np.array(integer_list) # 计算系数 coeff = (arr[0] * 5) + 1 # 广播乘法后转回普通列表 result = (arr * coeff).tolist() print(result) # 输出: [6, 12, 18, 24]
内容的提问来源于stack exchange,提问作者kamilla
相关产品推荐
相关产品推荐

