【问题标题】:List comprehension equivalent to map on two lists in parallel [duplicate]列表理解相当于并行映射两个列表[重复]
【发布时间】:2017-05-10 13:27:57
【问题描述】:

我知道使用一个列表参数map() 可以替换为列表理解。例如

map(lambda x : x**2, range(5))

可以替换为

[x**2 for x in range(5)]

现在我将如何为两个并行列表做类似的事情。换句话说,我有一行代码具有以下模式:

map(func, xs, ys)

func() 有两个参数。

我怎样才能对列表理解做同样的事情?

【问题讨论】:

    标签: python python-3.x functional-programming list-comprehension


    【解决方案1】:

    map() 带有多个参数相当于在这些额外参数上使用zip() function。在列表推导中使用zip() 来做同样的事情:

    [func(x, y) for x, y in zip(xs, ys)]
    

    一般来说,任何map(func, a1, a2, .., an) 表达式都可以使用[func(*args) for args in zip(a1, a2, .., an)] 转换为列表推导式。

    【讨论】:

    • 这个答案不如旧的、流行的、规范的副本那么彻底。
    • @TigerhawkT3:我不知道它的存在。这个答案现在是否正在与另一个问题进行比较?
    • 你没想到zip已经有问题了?
    • @TigerhawkT3:不,我不知道已经有一个关于如何将带有多个参数的map() 转换为列表comp 的问题,不。我应该这样做吗?
    猜你喜欢
    • 2011-02-28
    • 2015-08-03
    • 1970-01-01
    • 2019-08-05
    • 2012-06-19
    • 1970-01-01
    • 2017-04-17
    • 2018-06-26
    • 2017-01-28
    相关资源
    最近更新 更多