关于python:使用string.format进行整数列表连接

Integer list join using string.format

与用python连接具有整数值的列表一样,可以通过转换str然后将其连接来连接整数值列表。

顺便说一句,我想得到foo bar 10 0 1 2 3 4 5 6 7 8 9,其中先有几个数据(foobar,然后是10elements列表的大小。

我用string.format

1
2
x = range(10)
out = '{} {} {} {}'.format('foo', 'bar', len(x), x)

outfoo bar 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

为了解决问题,我可以将代码重写为

1
out = '{} {} {} '.format('foo', 'bar', len(x)) + ' '.join([str(i) for i in x])

它看起来不一致(混合string.formatjoin)。我试过了

1
2
slot = ' {}' * len(x)
out = ('{} {} {}' + slot).format('foo', 'bar', len(x), *x)

我觉得还是不吸引人。有没有只使用string.format来连接整数列表的方法?


既然你喜欢吸引力,只想用一条线,只想用format就可以了。

1
2
'{} {} {}{}'.format('foo', 'bar', len(x), ' {}' * len(x)).format(*x)
# foo bar 10 0 1 2 3 4 5 6 7 8 9


我可能遗漏了您的问题,但您可以简单地将链接的方法扩展到以下内容:

1
2
3
4
>>> x = range(10)
>>> out ="".join(map(str, ["foo","bar", len(x)] + x))
>>> out
'foo bar 10 0 1 2 3 4 5 6 7 8 9'


您只需使用打印功能:

1
2
3
>>> from __future__ import print_function  #Required for Python 2
>>> print('foo', 'bar', len(x), *x)
foo bar 10 0 1 2 3 4 5 6 7 8 9