如何打印没有括号的元组元组

Imo*_*ola 7 python tuples

我试图new_zoo在没有括号的情况下打印下面给出的元组:

zoo=('python','elephant','penguin')
new_zoo=('monkey','camel',zoo)
Run Code Online (Sandbox Code Playgroud)

我知道通常我们可以使用', '.join(...).但是因为这里new_zoo元组包含一个内部元组动物园,所以当我使用', '.join(new_zoo)它时显示:

TypeError: sequence item 2: expected str instance, tuple found
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

Mad*_*ist 4

最简单的方法是添加元组而不是嵌套它们:

>>> new_zoo = ('monkey', 'camel') + zoo
Run Code Online (Sandbox Code Playgroud)

创建扁平元组的另一种方法是使用星形拆包(有时通俗地称为 splat):

>>> new_zoo = ('monkey', 'camel', *zoo)
>>> print(new_zoo)
('monkey', 'camel', 'python', 'elephant', 'penguin')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以直接组装字符串:', '.join(new_zoo)

如果您需要处理嵌套元组,最通用的方法是递归解决方案:

>>> new_zoo = ('monkey', 'camel', zoo)
>>> def my_join(tpl):
...    return ', '.join(x if isinstance(x, str) else my_join(x) for x in tpl)
>>> my_join(new_zoo)
monkey, camel, python, elephant, penguin
Run Code Online (Sandbox Code Playgroud)