在Python中格式化字符串打印列表
在Python中,如果我想打印一个包含整数和字符串的格式化字符串,我通常会这样做:
print '%d %d - %s' %(x,y, mystr)
有没有类似的方法可以打印一个列表呢?我有:
L= [1,0,0]
name = 'V'
我希望输出的结果是:
v(1,0,0)
有没有类似于%d的方式可以用在列表对象上?
2 个回答
1
你可以创建一个新的类,继承自 list
,然后重写 repr
这个函数,这样就可以按照你想要的格式来打印这个 list
了,像这样:
In [1]: class MyList(list):
def repr(self):
return ", ".join(["%s" % s for s in self])
In [2]: x = MyList([1, 2, 3, 4, 5])
In [3]: x
Out[3]: [1, 2, 3, 4, 5]
In [4]: print x
[1, 2, 3, 4, 5]
In [5]: print "abc__ %s __def" % x
abc__ [1, 2, 3, 4, 5] __def
In [6]: y = MyList()
In [7]: y.append(55)
In [8]: y.append("abc")
In [9]: y
Out[9]: [55, 'abc']
In [10]: print "ZZZ -- %s -- ZZZ" % y
ZZZ -- [55, 'abc'] -- ZZZ
7
如果你想完全掌控列表是怎么显示的,你就需要单独来格式化它。
在你的情况下,代码可能是这样的:
items = [1,0,0]
name = 'V'
formatted = '%s(%s)' % (
name,
','.join(str(it) for it in items)
)