在map()中使用列表方法在Python中不可行吗?

在map()中使用列表方法在Python中不可行吗?,python,list,mapping,higher-order-functions,Python,List,Mapping,Higher Order Functions,我有一个项目要做,在那里我不允许使用任何周期。我只能使用map()、filter()、reduce等高阶函数。 我对我必须做的事情有一个明确的想法,但是当我尝试在映射中使用.insert()方法时,它返回一个NoneType。如果我使用list(),它将返回一个无类型的列表 map(lambda x, y: x.insert(y, info), double_list, size) 这就是我试图做的,是一个双重列表,一个相等列表的列表,大小一定范围。类似于[[1,2,3],[1,2,3],[1

我有一个项目要做,在那里我不允许使用任何周期。我只能使用map()、filter()、reduce等高阶函数。
我对我必须做的事情有一个明确的想法,但是当我尝试在映射中使用.insert()方法时,它返回一个NoneType。如果我使用list(),它将返回一个无类型的列表

map(lambda x, y: x.insert(y, info), double_list, size)
这就是我试图做的,是一个双重列表,一个相等列表的列表,大小一定范围。类似于[[1,2,3],[1,2,3],[1,2,3]]。 其想法是将某个对象(字符串)插入所有子列表中,但位置不同。例如,如果我想插入以将数字5放入所有这些元素中,那么输出应该类似于[[5,1,2,3],[1,5,2,3],[1,2,5,3]]。
有了for循环,这将是小菜一碟,但有了限制,我的日子真的很难过。

我想你正在寻找类似的东西

info=5
双_列表=[[1,2,3],[1,2,3],[1,2,3]]
打印([sl[:i]+[info]+sl[i:]表示i,枚举中的sl(双_列表)])
或者,无论出于什么原因,你都不能在理解中使用for

map(lambda v:v[1][:v[0]]+[info]+v[1][v[0]:],枚举(双_列表))

“但是当我试图在映射中使用.insert()方法时,它返回一个NoneType。如果我使用list(),它返回一个None类型的列表。”当然。这就是那些方法总是返回的结果。这些方法就地修改列表对象,按照惯例,将返回
None
。你不应该把变异和函数式编程结构混为一谈,比如
map
filer
reduce
。这些应该使用纯函数,没有副作用。您会注意到,
double\u list
将受到使用
list(map(lambda x,y:x.insert(y,info),double\u list,size))
的影响,但同样,您不应该这样做。不要使用
映射
/
过滤器
(或列表理解等)来产生副作用!就是这样!我使用了它的一个变体,定义了一个二级函数来实现这一点,以避免冗长的代码,但这正是我想要的。谢谢你!