如何以格式化方式以拼凑方式打印列表?

时间:2012-03-27 21:03:04

标签: list string-formatting python

我有一个清单:

L = [1, 2, 3, 4, 5, 6] 

我要打印

1 B 2 J 3 C 4 A 5 J 6 X 

从该列表中。

我该怎么做?

我是否必须制作另一个列表并zip,或者是否有某种方式可以使用我的格式说明符中的字母?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

L = [1, 2, 3, 4, 5, 6]

from itertools import chain

# new method
print "{} B {} J {} C {} A {} J {} X".format(*L)
# old method
print "%s B %s J %s C %s A %s J %s X" % tuple(L)
# without string formatting
print ' '.join(chain.from_iterable(zip(map(str, L), 'BJCAJX')))

请参阅str.formatstring formatting上的文档。

答案 1 :(得分:1)

一个很好的方法是在前缀中加上数字字典:

prefixes = {1: 'B', 2: 'J', 3: 'C', 4: 'A', 5: 'J', 6: 'X'}

然后你可以这样做:

print ' 'join('%s %s' % (num, prefix) for num, prefix in prefixes.itervalues())

如果您还有一个字母列表:

nums = [1, 2, 3, 4, 5, 6]
ltrs = ['B', 'J', 'C', 'A', 'J', 'X']

print ' '.join('%s %s' % (num, ltr) for num, ltr in zip(nums, ltrs)