Python 3 .format和List

时间:2017-10-19 15:00:29

标签: 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))

输出:

a1  a4  a2  a3

是否有更好的方法告诉format命令使用list' a'每一次?

4 个答案:

答案 0 :(得分:3)

您可以使用*(单个星号)为您解压缩列表。另见:Unpack a list

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

答案 1 :(得分:1)

这不会直接回答您的问题,但我只是使用标签加入列表:

"\t".join( map(str, [1, 2, 3, 4]) ) 

这会在列表的每个元素之间插入一个制表符,然后将结果作为字符串连接在一起。

不幸的是,此处需要map才能将每个数字转换为字符串,然后再将其转换为join

答案 2 :(得分:1)

您可以索引格式字符串中的列表,并按名称传递参数,以便您可以轻松地重复使用它。

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

答案 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的大小或您想要的顺序,代码将会#34;正常工作" (假设你不超出名单范围)。因此,如果您只想打印索引2和3:

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