python - 将多个数组打印为列
问题描述
我正在尝试打印一个数组列表,其中每个数组都是一列。我有以下数组:
cat=['aba','vdv']
dog=['tul','baba']
我可以通过执行以下操作来完成我想要的:
for x in zip(cat,dog):
print '\t'.join(x)
aba tul
vdv baba
但是,如果我想添加更多列,这很麻烦,所以我希望能够设置cat
和dog
到单个变量,然后迭代该变量,并将每个数组打印为表中的列,如下所示:
cat=['aba','vdv']
dog=['tul','baba']
df=[cat,dog]
for x in zip(df):
print '\t'.join(x)
但是,这会产生错误。任何建议将不胜感激。
解决方案
zip
接收迭代作为单独的参数,而不是在列表中。使用 时zip(df)
,您实际上是将单个可迭代对象传递给 zip ( [cat, dog]
)。相比:
zip(cat, dog) # what you should do
zip([cat, dog]) # what you are doing
在第一种情况下,cat
并且dog
被视为单独的可迭代对象,因此x
在每次迭代期间具有这些值:
('aba', 'tul',) # (cat[0], dog[0])
('vdv', 'baba') # (cat[1], dog[1])
在第二种情况下[cat, dog]
,被认为是单个可迭代的,因此x
在每次迭代期间都有这些值:
(['aba', 'vdv'],) # [cat, dog][0]
(['tul', 'baba'],) # [cat, dog][1]
要将列表中的每个项目作为单独的参数传递,您必须将列表解压缩为单独的参数:
cat = ['aba', 'vdv']
dog = ['tul', 'baba']
df = [cat, dog]
for x in zip(*df): # note the asterisk before df
print('\t'.join(x)) # using Python 3, so added parenthesis
你也可以用这个替换循环:
print(*('\t'.join(x) for x in zip(*df)), sep='\n')
推荐阅读
- sql - 获取日期 + 3 天(使用特定日期)SQL
- amazon-web-services - AWS Lex - 默认插槽类型没有限制
- php - 在 WordPress 4.9 中去除图像、视频、iframe 周围的自动 P 标签
- javascript - WordPress在任何地方单击时隐藏下拉菜单
- java - Java中的Split()
- c# - 将对象类型转换为仅在运行时知道的所述类型的变量
- php - 需要定义不初始化任何东西的构造函数吗?
- reactjs - 从 REST 响应中获取纯文本
- spring-integration - Spring Boot 集成邮件 - 授权失败错误
- java - 使用 Java 创建 URL - 最佳实践是什么?