用常数x映射lambda x,y

2024-04-23 21:07:54 发布

您现在位置:Python中文网/ 问答频道 /正文

有什么好的方法可以将双参数函数map转换成一个值列表,其中第一个参数是常量,第二个参数取自list

示例:

lambda x,y: x+y
x='a'
y=['2','4','8','16']

预期结果:

['a2','a4','a8','a16']

注:

  • 这只是一个例子,实际的lambda函数更复杂
  • 假设我不能使用列表理解

Tags: 方法lambda函数a2示例map列表参数
3条回答

Python 2.x

from itertools import repeat

map(lambda (x, y): x + y, zip(repeat(x), y))

Python 3.x

map(lambda xy: ''.join(xy), zip(repeat(x), y))

你也可以用闭包

x='a'
f = lambda y: x+y
map(f, ['1', '2', '3', '4', '5'])
>>> ['a1', 'a2', 'a3', 'a4', 'a5']

您可以使用itertools.starmap

a = itertools.starmap(lambda x,y: x+y, zip(itertools.repeat(x), y))
a = list(a)

你得到了你想要的结果。

顺便说一下,itertools.imap和Python3的map都接受以下内容:

itertools.imap(lambda x,y: x+y, itertools.repeat(x), y)

默认Python2的map不会在y结尾处停止,而是插入Nones。。。


但是理解力要比理解力强得多

[x + num for num in y]

相关问题 更多 >