在Python中格式化字符串打印列表

2 投票
2 回答
5930 浏览
提问于 2025-04-17 04:17

在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)
)

撰写回答