在以下代码中:
a = 'a'
tup = ('tu', 'p')
b = 'b'
print 'a: %s, t[0]: %s, t[1]: %s, b:%s'%(a, tup[0], tup[1], b)
我如何“扩展”(无法找出更好的动词)tup
以便我不必明确列出其所有元素?
注意我不想打印tup
本身,而是打印其各个元素。换句话说,以下代码不是我正在寻找的
>>> print 'a: %s, tup: %s, b: %s' % (a, tup, b)
a: a, tup: ('tu', 'p'), b: b
上面的代码打印tup
,但我想独立打印它的元素,元素之间有一些文字。
以下不起作用:
print 'a: %s, t[0]: %s, t[1]: %s, b:%s'%(a, tup, b)
In [114]: print '%s, %s, %s, %s'%(a, tup, b)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: not enough arguments for format string
答案 0 :(得分:8)
有可能flatten a tuple,但我认为在你的情况下,通过连接构建一个新的元组更容易。
'a: %s, t[0]: %s, t[1]: %s, b:%s'%((a,) + tup + (b,))
# ^^^^^^^^^^^^^^^^^
答案 1 :(得分:3)
如果您想使用格式方法,您可以这样做:
"{0}{2}{3}{1}".format(a, b, *tup)
你必须在tup
之后命名每个参数,因为使用*
解包元组到函数调用的语法需要这个。
答案 2 :(得分:2)
>>> print 'a: {0}, t[0]: {1[0]}, t[1]: {1[1]}, b:{2}'.format(a, tup, b)
a: a, t[0]: tu, t[1]: p, b:b
如果您愿意,也可以使用命名参数
>>> print 'a: {a}, t[0]: {t[0]}, t[1]: {t[1]}, b:{b}'.format(a=a, t=tup, b=b)
a: a, t[0]: tu, t[1]: p, b:b