如何取消嵌套混合类型的元组? [复制]

Posted

技术标签:

【中文标题】如何取消嵌套混合类型的元组? [复制]【英文标题】:How do I unnest a tuple with mixed types? [duplicate] 【发布时间】:2016-10-29 16:35:07 【问题描述】:

我正在尝试将具有混合类型的元组扁平化为列表。以下函数不会产生所需的输出:

a = (1, 2, 3, ['first', 'second'])
def flatten(l): 
return flatten(l[0]) + (flatten(l[1:]) if len(l) > 1 else []) if type(l) is list else [l]

>>> flatten(a)
[(1, 2, 3, ['first', 'second'])]
>>> flatten(flatten(a))
[(1, 2, 3, ['first', 'second'])]
>>> [flatten(item) for item in a]
[[1], [2], [3], ['first', 'second']]

输出应该是:

>>> [1, 2, 3, 'first', 'second']

【问题讨论】:

或者***.com/questions/406121/… 关于扁平化嵌套序列的现有问题没有一个对您有帮助吗?有不少…… 如果输入是元组,if type(l) is list 显然无法正常工作,您可能需要检查isinstance(l, (list,tuple)) 【参考方案1】:
def flatten(l):
    if isinstance(l, (list,tuple)):
        if len(l) > 1:
            return [l[0]] + flatten(l[1:])
        else:
            return l[0]
    else:
        return [l]

a = (1, 2, 3, ['first', 'second'])

print(flatten(a))

[1, 2, 3, '第一', '第二']

【讨论】:

以上是关于如何取消嵌套混合类型的元组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Haskell 中连接幻像类型中的元组?

TypeScript 按任意类型过滤元组类型

为后来成为特定类型的元组的空元组设置正确的类型

具有多个任意但相等类型的元组

Python3 typehints - 传入类型元组后,指定返回值是这些类型实例的元组

固定长度的元组