我应该如何使用list comprehension重写这个map()示例?

Rel*_*der 2 python list-comprehension map python-3.x

>>> a = [1,2,3,4]
>>> b = [17,12,11,10]
>>> c = [-1,-4,5,9]

>>> list(map(lambda x,y,z:x+y+z, a,b,c))
[17, 10, 19, 23]
Run Code Online (Sandbox Code Playgroud)

尝试:

>>>[(x+y+z) for x in a for y in b for z in c]
Run Code Online (Sandbox Code Playgroud)

但是添加了这些列表中每个可能的元素组合(不仅仅是先加第一,第二和第二等):

[17, 14, 23, 27, 12, 9, 18, 22, 11, 8, 17, 21, 10, 7, 16, 20, 18, 15, 24, 28, 13, 10, 19, 23, 12, 9, 18, 22, 11, 8, 17, 21, 19, 16, 25, 29, 14, 11, 20, 24, 13, 10, 19, 23, 12, 9, 18, 22, 20, 17, 26, 30, 15, 12, 21, 25, 14, 11, 20, 24, 13, 10, 19, 23]
Run Code Online (Sandbox Code Playgroud)

这有可能吗?谢谢.

Ben*_*son 5

你正在寻找zip,在锁定步骤中驱动多个迭代':

[x+y+z for x, y, z in zip(a, b, c)]
Run Code Online (Sandbox Code Playgroud)

您的原始尝试产生三个列表的笛卡尔积.模块中存在笛卡尔积的辅助函数itertools.

  • 或者,`[zip(a,b,c)中行的总和(行)]. (3认同)