【问题标题】:Assigning list values to the parameter将列表值分配给参数
【发布时间】:2021-06-30 11:37:06
【问题描述】:

我有以下清单:

lst = [(A,[1,2,3,4]), (B, [1,2,3,5]). (C, [4,5,7,6])]

我想拆分列表,使所有 x(应该是 str)值包含 A、B、C、D 和 Y(应该是 int)包含 [1,2,3,4], [1, 2,3,5],[4,5,7,6]。期望的输出:

print(x)
A, B, C, D
print(y)
[1,2,3,4], [1,2,3,5], [4,5,7,6]

到目前为止我尝试了什么?

x,y=[(a,b) for a, b in zip(lst[0], lst[1])])]

这不存储 x 和 y 的值。我该怎么做?

【问题讨论】:

  • 检查x, y = zip(*lst)

标签: python list list-comprehension


【解决方案1】:

一个班轮:

x, y = zip(*lst)

例子:

lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
x, y = zip(*lst)
print(x)  # Out: ('A', 'B', 'C')
print(y)  # Out: ([1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6])

【讨论】:

    【解决方案2】:

    将列表推导与 zip 结合使用,

    x,y = zip(*[(item[0], item[1]) for item in lst])
    

    【讨论】:

      【解决方案3】:

      您可以使用列表推导 -

      >>> lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
      >>> 
      >>> 
      >>> 
      >>> 
      >>> x = [val[0] for val in lst]
      >>> x
      ['A', 'B', 'C']
      >>> y = [val[1] for val in lst]
      >>> y
      [[1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6]]
      >>> 
      
      

      【讨论】:

      • 非常感谢,是否可以将X和Y合并在一行中?
      【解决方案4】:

      如果你必须将它放在一行中,你也可以这样做

      x,y = [[v[i] for v in lst] for i in (0,1)]
      

      但我不确定它是否比稍微更长更清晰的东西有所改进。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-03
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多