我在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]
编译器不会从子列表中删除括号。请给我建议以修复它。谢谢!
答案 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
,该参数是一个列表,其中包含您希望展平的可迭代类型。这可以包括list
,tuple
或其他任何内容。这里我默认为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]