python - 我应该如何使用列表理解重写这个 map() 示例?

标签 python python-3.x dictionary list-comprehension

>>> 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]

尝试过:

>>>[(x+y+z) for x in a for y in b for z in c]

但添加了这些列表元素的所有可能组合(不仅仅是先对后、后对后等等):

[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]

这可能吗?谢谢。

最佳答案

您正在寻找 zip ,它“锁定步骤”驱动多个可迭代对象:

[x+y+z for x, y, z in zip(a, b, c)]

您最初的尝试产生了 Cartesian product三个名单中。存在 a helper function用于 itertools 模块中的笛卡尔积。

关于python - 我应该如何使用列表理解重写这个 map() 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928941/

相关文章:

python - Linux Mint 更改 Python 的当前版本

python - 根据另一个数组的索引取一个数组的平均值

python - Conda 无法删除名为 "tensorflow"的环境

python-3.x - 无法使用 Keras 和 Sklearn 将字符串列转换为分类矩阵

python - 打印字符串时数字字典键作为占位符?

python - Python 中如何为 `list` 分配内存?为什么列表的大小与其对象的总和不同?

python - 在不知道名称的情况下如何在另一个文件中找到并使用变量?

python - 正则表达式 : Preceding token is not quantifiable

c# - NUnit 嵌套集合比较

Java Map<String, Map<String, Object>> 转换为 String 并返回