什么是map
两个参数的优雅方法lambda
函数为一个值列表,其中第一个参数是常量,第二个参数是list
?map lambda x,y with constant x
实施例:
lambda x,y: x+y
x='a'
y=['2','4','8','16']
预期的结果:
['a2','a4','a8','a16']
注:
- 这只是一个例子,实际lambda函数是更复杂
- 假设一世不能使用列表理解
什么是map
两个参数的优雅方法lambda
函数为一个值列表,其中第一个参数是常量,第二个参数是list
?map lambda x,y with constant x
实施例:
lambda x,y: x+y
x='a'
y=['2','4','8','16']
预期的结果:
['a2','a4','a8','a16']
注:
您可以使用itertools.starmap
a = itertools.starmap(lambda x,y: x+y, zip(itertools.repeat(x), y))
a = list(a)
,你会得到你想要的输出。
BTW,既itertools.imap
和Python3的map
将接受如下:
itertools.imap(lambda x,y: x+y, itertools.repeat(x), y)
默认Python2的map
不会在y
末停止,将插入None
小号...
但理解是太更好
[x + num for num in y]
def prependConstant(x, y):
return map(lambda yel: x + yel, y)
你也可以使用封此
x='a'
f = lambda y: x+y
map(f, ['1', '2', '3', '4', '5'])
>>> ['a1', 'a2', 'a3', 'a4', 'a5']
['a' + x for x in y]
,或者如果你真的需要一个调用的:
def f(x, y):
return x + y
[f('a', x) for x in y]
你有使用拉姆达?
>>> x='a'
>>> y=['2','4','8','16']
>>> map(x.__add__, y)
['a2', 'a4', 'a8', 'a16']
>>>
顺便说一句,既itertools.imap和Python3的地图将接受如下:
itertools.imap(拉姆达X,Y:X + Y,itertools.repeat(X)中,y) 默认的Python2地图不会停止在y的末尾,并会插入Nones ...
我只是想添加到这个答案是在Python 2.x中,你可以像
map(lambda x,y: x+y, itertools.repeat(x, len(y)))
有所收获itertools停止迭代。
+1用于提示pythonic列表理解而不是总体ol映射函数(= - 虽然我刚注意到提问者状态“假设我不能使用列表理解” –