【问题标题】:How to unpack tuples within a list to use in map如何解包列表中的元组以在地图中使用
【发布时间】:2023-02-25 01:27:40
【问题描述】:

我只是想稍微简化一下我的问题。我有这样的功能: def func(a,b): return a+b 我还有一个元组列表,我想将其映射到此函数。 num = [(0,4),(6,3),(2,2),(9,1)] 我希望能够将 (a,b) 之类的列表中的元组映射到我提供的函数。

在 javascript 中,您可以通过像这样更改函数定义来实现此目的: `def func((a,b)): 返回 a+b

数 = [(0,4),(6,3),(2,2),(9,1)] 地图(功能,数字)`

这显然在 Python 中不起作用。我知道我也可以只将元组传递给函数然后返回元组[0]+元组[1],但我不知道是否有更简洁的选项。

【问题讨论】:

  • 您可以检查 a 的类型,如果它是一个元组,则返回 a[0] + a[1],如果它是一个 int,则返回 a+b。您需要给 b 一个默认值(例如 None 或 0)。

标签: python


【解决方案1】:

这应该可以解决问题:

num = [(0,4),(6,3),(2,2),(9,1)] 

res =[item for sublist in num for item in sublist]

[0, 4, 6, 3, 2, 2, 9, 1]

【讨论】:

    【解决方案2】:
    num = [(0,4),(6,3),(2,2),(9,1)]
    result = list(map(lambda x: func(*x), num))
    print(result)
    

    这段代码会输出[4, 9, 4, 10],这是将num列表中每个元组的元素相加的结果。

    lambda x: func(*x) 函数将元组 x 作为输入,使用 * 运算符将其解包,并将 func 函数应用于这两个元素。结果值列表存储在结果变量中。

    【讨论】:

      【解决方案3】:

      你可以尝试这样的事情:

      def func(a, b=None):
          if type(a) == tuple:
              return a[0] + a[1] # or sum(a) if you want all values added
          return a+b
      

      这只会检查 a 是否是一个元组,尽管在这个例子中你必须检查 a 是否有足够的项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-24
        • 2011-10-17
        • 1970-01-01
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多