在一行中打印不带括号的混合列表

时间:2019-01-18 04:34:00

标签: python python-3.x

我在Python中有一个列表。

我尝试将print(* arr,sep =“,”)设置为引用“ Print list without brackets in a single row”。但是我真正的问题是:

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

# print an arr without brackets
print(*arr, sep=",")
  • 预期结果: 0,txt,4,5,3,4,2

  • 实际结果: 0,txt,4,5,[3,4,2]

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

2 个答案:

答案 0 :(得分:0)

使用函数先将列表变平,然后再打印新列表。

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,该参数是一个列表,其中包含您希望展平的可迭代类型。这可以包括listtuple或其他任何内容。这里我默认为list,因为这就是您的示例所需要的。

答案 1 :(得分:0)

尝试此操作以仅从列表中删除嵌套括号:

num = 2    
arr = [0, "txt", 4, 5, [3,4, num]]    
output = []     
def removeBracket(arr): 
    for i in arr: 
        if type(i) == list: 
            removeBracket(i) 
        else: 
            output.append(i)   
removeBracket(arr)
print(output) # [0, 'txt', 4, 5, 3, 4, 2]
相关问题