扩展python中的元组

时间:2010-08-08 10:10:19

标签: python tuples

在以下代码中:

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

3 个答案:

答案 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