Python 3.format 和列表

新手上路,请多包涵

我希望从我的 Python 程序中构建的列表中打印出结果。

我将获取列表中值的结果并打印出来,用制表符分隔。

我有一个名为“a”的列表,我将只选择元素来生成最终表格。

但是当我使用 .format 方法时,我不得不调用列表四次。

 a = [1,2,3,4]
print('a{[0]}\ta{[3]}\ta{[1]}\ta{[2]}'.format(a, a, a, a))

输出:

 a1  a4  a2  a3

有没有更好的方法告诉格式命令每次都使用列表“a”?

原文由 zeeman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

您可以使用 * (单个星号)为您解压列表。另请参阅: 解压列表

a = [1,2,3,4]
print('a{0}\ta{3}\ta{1}\ta{2}'.format(*a))

原文由 Taku 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用的是 Python 3.6 以上版本,则可以根据需要使用 f-strings:

 a = [1, 2, 3, 4]
result = f"a{a[0]}\ta{a[3]}\ta{a[1]}\ta{a[2]}"
print(result)

但如果 a 改变它的尺寸,它就不是很可扩展。

如果顺序无关紧要,我会更倾向于按照以下方式做更多的事情:

 a = [1, 2, 3, 4]
result = "\t".join(f"a{x}" for x in a)
print(result)

这使用理解来创建按您想要的方式格式化的字符串序列,然后使用制表符将它们连接在一起。

如果顺序(或只选择某些项目)很重要,但你仍然想使用这样的东西,你可以尝试:

 a = [1, 2, 3, 4]
indexes = [0, 3, 1, 2]
result = "\t".join(f"a{a[i]}" for i in indexes)
print(result)

这样你就可以改变 a 的大小,或者你想要的顺序只是通过改变这些列表和代码将“正常工作”(假设你没有超出列表的范围)。所以如果你只想打印索引 2 和 3:

 a = [1, 2, 3, 4]
indexes = [2, 3]
result = "\t".join(f"a{a[i]}" for i in indexes)
print(result)

原文由 LexyStardust 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进