首页 > 解决方案 > 在单行中打印不带括号的混合列表

问题描述

我有一个 Python 列表。

我试图设置 print(*arr, sep=",") 参考“在单行中不带括号的打印列表”。但我真正的问题是:

### List
num = 2
arr= [0, "txt", 4, 5, [3,4, num]]
# print full
print(arr)

# print an arr without brackets
print(*arr, sep=",")

编译器不会从子列表中删除括号。请给我建议以解决它。谢谢!

标签: pythonpython-3.x

解决方案


使用函数先展平列表,然后打印新列表。

def flatten(original, iterables=[list]):
    out = []
    for val in original:
        if type(val) not in iterables:
            out.append(val)
        else:
            out += flatten(val)
    return out


print(flatten(arr))

在这里,我明确指定type(val) != list它不会尝试拆分您的字符串,而是会展平子列表。此外,此方法将处理任何深度的嵌套列表。

结果:

>>> print(flatten(arr))
[0, 'txt', 4, 5, 3, 4, 2]

您还可以传递第二个参数iterables,它是一个包含您希望展平的可迭代类型的列表。这可以包括list,tuple或其他任何内容。在这里,我默认为,list因为这是您的示例所需要的。


推荐阅读