How can I pad a list when printed in python?
For example, I have the following li开发者_开发百科st:
mylist = ['foo', 'bar']
I want to print this padded to four indices, with commas. I know I can do the following to get it as a comma and space separated list:
', '.join(mylist)
But how can I pad it to four indices with 'x's, so the output is like:
foo, bar, x, x
In [1]: l = ['foo', 'bar']
In [2]: ', '.join(l + ['x'] * (4 - len(l)))
Out[2]: 'foo, bar, x, x'
The ['x'] * (4 - len(l))
produces a list comprising the correct number of 'x'
entries needed for the padding.
edit There's been a question about what happens if len(l) > 4
. In this case ['x'] * (4 - len(l))
results in an empty list, as expected.
Another possibility using itertools:
import itertools as it
l = ['foo', 'bar']
', '.join(it.islice(it.chain(l, it.repeat('x')), 4))
Based on the grouper()
recipe from itertools
:
>>> L = ['foo', 'bar']
>>> ', '.join(next(izip_longest(*[iter(L)]*4, fillvalue='x')))
'foo, bar, x, x'
It probably belongs in the "don't try it at home" category.
精彩评论