【问题标题】:convert only non-empty list to tuple in a list of lists仅将非空列表转换为列表列表中的元组
【发布时间】:2014-01-12 17:03:01
【问题描述】:

如何转换:

[[], [], [('ef', 1)], [], [('cd', 3)], [('ab', 2)]]

进入这个:

[[], [], ['ef', 1], [], ['cd', 3], ['ab', 2]]

我知道要将元组转换为列表,我们只需使用 list(tuple),或者如果它是像 [(1,2),(3,4)] 这样的列表,我们可以使用 map。我将如何使用主列表中的列表中的元组执行此操作,而空列表保持不变?

【问题讨论】:

  • 这些列表是否最多包含一个元组?

标签: python list python-3.x tuples


【解决方案1】:
>>> my_list = [[], [], [('ef', 1)], [], [('cd', 3)], [('ab', 2)]]

>>> [list(*el) for el in my_list]
[[], [], ['ef', 1], [], ['cd', 3], ['ab', 2]]

【讨论】:

    【解决方案2】:
    >>> l = [[], [], [('ef', 1)], [], [('cd', 3)], [('ab', 2)]]
    >>> import itertools
    >>> [list(itertools.chain(*item)) for item in l]
    [[], [], ['ef', 1], [], ['cd', 3], ['ab', 2]]
    

    这还将处理每个列表元素的多个元组(如果需要的话):

    >>> l = [[], [], [('ef', 1)], [], [('cd', 3),('ab', 2)]]
    >>> [list(itertools.chain(*item)) for item in l]
    [[], [], ['ef', 1], [], ['cd', 3, 'ab', 2]]
    

    【讨论】:

    • 删除了我的答案以支持这个。
    【解决方案3】:

    类似这样的:

    >>> lis = [[], [], [('ef', 1)], [], [('cd', 3)], [('ab', 2)]]
    >>> [list(x[0]) if x else x for x in lis]
    [[], [], ['ef', 1], [], ['cd', 3], ['ab', 2]]
    

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 2012-06-05
      • 1970-01-01
      • 2012-11-02
      • 2022-09-27
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      相关资源
      最近更新 更多