在Python中嵌套时展平元组

在Python中嵌套时展平元组,python,python-3.x,tuples,Python,Python 3.x,Tuples,作为函数的输出,我得到的元组形式为a和b,如下所示: a = ((x, y), z) b = (x, y) 我想将嵌套表单展平如下: a = (x, y, z) 这将始终导致我有一个一层深的元组,而不管我从函数返回什么 在Python3中,什么是执行此操作的最快和最有效的方法?您可以尝试解压缩元组并捕获任何类型错误: 使用带元组的itertools.chain.from_iterable 例: 输出: 简单地说a=*x,y,z可能是重复的吗?为什么不从函数返回x,y,z,或者它不是你的呢?例

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

a = ((x, y), z)
b = (x, y)
我想将嵌套表单展平如下:

a = (x, y, z)
这将始终导致我有一个一层深的元组,而不管我从函数返回什么


在Python3中,什么是执行此操作的最快和最有效的方法?

您可以尝试解压缩元组并捕获任何类型错误:

使用带元组的itertools.chain.from_iterable

例:

输出:


简单地说a=*x,y,z可能是重复的吗?为什么不从函数返回x,y,z,或者它不是你的呢?例如,函数不是用整数元组来尝试这一点@EugeneYarmash谢谢。我只是用OP的样本,认为它可能是字符串
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)
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')