嵌套在Python中时变平元组

时间:2019-07-17 15:04:45

标签: python python-3.x tuples

作为一个函数的输出,我得到a和b形式的元组,如下所示:

a = ((x, y), z)
b = (x, y)

我想将嵌套形式如下:

a = (x, y, z)

不管我从函数返回什么,这总是会导致我有一个深一层的元组。

在Python 3中最快,最有效的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以尝试打开元组的包装并抓住任何TypeError

def flatten(a):
    try:
        (x, y), z = a
        return x, y, z
    except TypeError:
        return a

print(flatten(((1, 2), 3)))  # (1, 2, 3)
print(flatten((1, 2)))  # (1, 2)

答案 1 :(得分:1)

itertools.chain.from_iterabletuple()一起使用

例如:

from itertools import chain

a = (("x", "y"), "z")
b = ("x", "y")

for i in [a, b]:
    print(tuple(chain.from_iterable(i)))

输出:

('x', 'y', 'z')
('x', 'y')