垂直打印列表

2024-10-02 04:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表列表,其中包含表示牌堆中牌的字符串。我需要垂直打印列表。在

stacks = [['4C', 'QD', '9D', 'TD', 'JH', 'JD', '6C', 'AC', '3C', 'TS', 'TH'], ['AH', '2C', 'KD', '8C', '5C', '5H', '2D', '5D', '7C', 'AS', 'AD'], ['3S', 'KH', '3H', 'TC', 'QS', '4D', '7S', '7H', '9C', '4S'], ['JS', '7D', 'KC', 'QH', '6S', '6H', '8H', '8S', 'JC', '5S'], ['KS', '2S', 'QC', '4H', '6D', '9S', '2H', '8D', '3D', '9H']]

我需要打印成:

^{pr2}$

继续这样下去


Tags: 字符串列表asackdjdtdts
3条回答

前2行比其余行长,因此使用itertools.izip_longest()而不是标准的zip()来保存该数据。我使用了一个填充值'',它用于不等长列表中的缺失值。在

from itertools import izip_longest

stacks = [['4C', 'QD', '9D', 'TD', 'JH', 'JD', '6C', 'AC', '3C', 'TS', 'TH'], ['AH', '2C', 'KD', '8C', '5C', '5H', '2D', '5D', '7C', 'AS', 'AD'], ['3S', 'KH', '3H', 'TC', 'QS', '4D', '7S', '7H', '9C', '4S'], ['JS', '7D', 'KC', 'QH', '6S', '6H', '8H', '8S', 'JC', '5S'], ['KS', '2S', 'QC', '4H', '6D', '9S', '2H', '8D', '3D', '9H']]

for row in izip_longest(*stacks, fillvalue=''):
    print ' '.join(row)

输出:

^{pr2}$

如果您不想在最后一行留下空白:

for row in izip_longest(*stacks):
    print ' '.join(col for col in row if col is not None)

以下是仅使用嵌套循环执行此操作的方法:

longest = max(len(row) for row in stacks)
for i in range(longest):
    for row in stacks:
            if i < len(row):
                    print row[i],
    print

您可以使用zip

stacks = [['4C', 'QD', '9D', 'TD', 'JH', 'JD', '6C', 'AC', '3C', 'TS', 'TH'], ['AH', '2C', 'KD', '8C', '5C', '5H', '2D', '5D', '7C', 'AS', 'AD'], ['3S', 'KH', '3H', 'TC', 'QS', '4D', '7S', '7H', '9C', '4S'], ['JS', '7D', 'KC', 'QH', '6S', '6H', '8H', '8S', 'JC', '5S'], ['KS', '2S', 'QC', '4H', '6D', '9S', '2H', '8D', '3D', '9H']]
stacks = zip(*stacks)
print stacks

输出

^{pr2}$

使用zip转换列表:

for vlist in zip(*stacks):
    print ' '.join(vlist)

相关问题 更多 >

    热门问题