python - 在单行中打印不带括号的混合列表
问题描述
我有一个 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=",")
预期结果:0,txt,4,5,3,4,2
实际结果:0,txt,4,5,[3, 4, 2]
编译器不会从子列表中删除括号。请给我建议以解决它。谢谢!
解决方案
使用函数先展平列表,然后打印新列表。
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
因为这是您的示例所需要的。
推荐阅读
- git - Git SSH 公钥身份验证在 Azure DevOps 上使用 git 失败
- java - 带有 selenium 的线程“主”java.lang.NoClassDefFoundError 中的异常
- sql - Sql,试图将值相加到特定值
- java - 检索HashSet中的数据
- c# - 即使已达到连接的最大重试次数,如何继续尝试连接到 websocket?
- c# - 使用通配符的 XDocument 后代选择器?
- regex - 提取分号之间的值,该值在正则表达式中包含您想要的单词
- python-2.7 - Python模型pip安装成功,但没有命名模型?
- javascript - NATIVESCRIPT + JS 使用按钮添加标记到地图
- mysql - mysql - 按第三个表中的值对 2 个表中的数据进行排序