作为一个函数的输出,我得到a和b形式的元组,如下所示:
a = ((x, y), z)
b = (x, y)
我想将嵌套形式如下:
a = (x, y, z)
不管我从函数返回什么,这总是会导致我有一个深一层的元组。
在Python 3中最快,最有效的方法是什么?
答案 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_iterable
与tuple()
一起使用
例如:
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')