首页 > 解决方案 > 展平包含其他类型对象的列表中的元组

问题描述

我有一个类似于 matrioska 的列表,幸运的是它确实达到了一种格式,即 [(),int]

例子:

    [[('spring', 'flowers'), 1], [('spring', 'birds'), 1], [('autumn', 'leaves'), 3],[('autumn', 'mild'), 1], [('summer', 'sun'), 2]]

我试图得到这个:

    [['spring', 'flowers', 1], ['spring', 'birds', 1], ['autumn', 'leaves', 3],['autumn', 'mild', 1], ['summer', 'sun', 2]]

我尝试使用以下公式解包元组:

   [(a, *rest) for a, rest in list]

错误是: TypeError: 'int' object is not iterable

我还尝试将子列表中的元素分开,但无法保持将它们再次组合在一起的顺序:

   season    = list(x[0] for x in info if isinstance(x,tuple))
   property  = list(x[1] for x in info if isinstance(x,tuple))
   times     = list(x for x in info if isinstance(x,int))

标签: python-3.xpandas

解决方案


如果元素在语法上相等,则可以使用。

lst = [[('spring', 'flowers'), 1], [('spring', 'birds'), 1], [('autumn', 'leaves'), 3],[('autumn', 'mild'), 1], [('summer', 'sun'), 2]]

[[x[0][0], x[0][1], x[1]] for x in lst]

# [['spring', 'flowers', 1], ['spring', 'birds', 1], ['autumn', 'leaves', 3], ['autumn', 'mild', 1], ['summer', 'sun', 2]]

推荐阅读