Python中使用map函数时如何同时传入列表和固定单值参数
针对map函数传入固定参数的几种简便实现方案
方案1:使用itertools.repeat生成固定值迭代器
这是最适配map多参数传固定值的方案,不需要手动构造等长列表,内存效率更高,repeat生成的迭代器会根据第一个可迭代对象的长度自动匹配迭代次数:
import math from itertools import repeat lis = [1,2,3,4] squred_lis = list(map(math.pow, lis, repeat(2))) print(squred_lis)
方案2:使用lambda匿名函数包装目标函数
不需要额外导入模块,直接在lambda中固定第二个参数的值,map只需传入一个可迭代对象即可:
import math lis = [1,2,3,4] squred_lis = list(map(lambda x: math.pow(x, 2), lis)) print(squred_lis)
方案3:使用列表推导式实现(更推荐)
对于简单的映射逻辑,列表推导式的可读性远高于map写法,还可以直接用Python原生平方运算符省略math库的导入:
lis = [1,2,3,4] # 保留math.pow的写法 squred_lis = [math.pow(x, 2) for x in lis] # 更简洁的原生实现,返回结果为整数类型 squred_lis = [x**2 for x in lis]
内容的提问来源于stack exchange,提问作者Hassan Ibrahim
相关产品推荐
相关产品推荐

