Python 3 .format 和 List

zee*_*man 5 python-3.x

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

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

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

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

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

输出:

a1  a4  a2  a3
Run Code Online (Sandbox Code Playgroud)

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

abc*_*ccd 6

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

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


Lex*_*ust 5

如果您使用的是 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

如果订单(或仅选择某些项目)很重要,但您仍然想使用这样的东西,您可以尝试:

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

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

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