在Python中以列格式打印列表

时间:2016-04-16 03:32:54

标签: python

我正在设置一个纸牌游戏,我试图找出一些方法可以打印列格式的每张卡片列表。关于如何使用以下列表进行此操作的任何想法?

[6♦]
[2♣, 6♠, A♣, 7♣, J♣, XX]
[4♥, 2♥, 4♠, 8♣, 5♦, XX, XX]
[5♠, 3♦, A♠, 10♦, 3♠, XX, XX, XX]
[7♥, 10♣, 10♥, 2♦, J♠, XX, XX, XX, XX]
[8♦, 3♣, 7♦, 9♥, K♠, XX, XX, XX, XX, XX]
[7♠, Q♠, 9♠, A♦, 3♥, XX, XX, XX, XX, XX, XX]

2 个答案:

答案 0 :(得分:3)

对你的代码中可用的内容以及你想做的事情进行一些猜测,我会说你应该从一行中的每个列表中打印一个元素,然后转到下一个列表。

# -*- coding: utf-8 -*-
from itertools import izip_longest

L1 = [u'6♦']
L2 = [u'2♣', u'6♠', u'A♣', u'7♣', u'J♣', u'XX']
L3 = [u'4♥', u'2♥', u'4♠', u'8♣', u'5♦', u'XX', u'XX']

for a,b,c in izip_longest(L1, L2, L3, fillvalue=' '):
    print u'{0}\t{1}\t{2}'.format(a,b,c)

几乎没有变化,你应该得到你想要的东西。但是对于更严肃的终端游戏UI,您应该考虑使用python curses

答案 1 :(得分:2)

正如其他人所说,itertools.zip_longest绝对是您正在寻找的

from itertools import zip_longest

stacks = [
            ['6♦'],
            ['2♣', '6♠', 'A♣', '7♣', 'J♣', 'XX'],
            ['4♥', '2♥', '4♠', '8♣', '5♦', 'XX', 'XX'],
            ['5♠', '3♦', 'A♠', '10♦', '3♠', 'XX', 'XX', 'XX'],
            ['7♥', '10♣', '10♥', '2♦', 'J♠', 'XX', 'XX', 'XX', 'XX'],
            ['8♦', '3♣', '7♦', '9♥', 'K♠', 'XX', 'XX', 'XX', 'XX', 'XX'],
            ['7♠', 'Q♠', '9♠', 'A♦', '3♥', 'XX', 'XX', 'XX', 'XX', 'XX', 'XX']
         ]

for cards in zip_longest(*stacks,fillvalue=""):
    print(" ".join("%3s"%c for c in cards))

导致此输出:

 6♦  2♣  4♥  5♠  7♥  8♦  7♠
     6♠  2♥  3♦ 10♣  3♣  Q♠
     A♣  4♠  A♠ 10♥  7♦  9♠
     7♣  8♣ 10♦  2♦  9♥  A♦
     J♣  5♦  3♠  J♠  K♠  3♥
     XX  XX  XX  XX  XX  XX
         XX  XX  XX  XX  XX
             XX  XX  XX  XX
                 XX  XX  XX
                     XX  XX
                         XX