从列表中打印网格而不显示

时间:2015-06-18 08:30:14

标签: python list printing

我有一个单词列表,即[ cat, dog, bird, horse, pig, duck, frog, chicken, sheep, cow]  我想打印在这样的网格中说出其中的九个:

cat    dog    horse

bird   pig   duck

frog   chicken  sheep

无论如何都这样做? 另外当我让他们打印出一行时,我会在每个项目的末尾得到 \ n 换行符,这非常烦人 - 是否有一个简单的解决方法

5 个答案:

答案 0 :(得分:2)

像这样:

li = [ 
    'cat', 'dog', 'bird', 
    'horse', 'pig', 'duck', 
    'frog', 'chicken', 'sheep', 
    'cow'
]

lines = [" ".join(li[x:x+3]) for x in xrange(0, len(li), 3)]
for line in lines:
    print line

答案 1 :(得分:0)

我假设那些是字符串?在这种情况下,您可以使用for循环并打印整个字符串减去\ n字符,例如cat [: - 2]。

答案 2 :(得分:0)

您可以通过查找最长的单词(动物名称)并将该长度用作单词之间的填充来实现。以下内容将字符串拆分为3个组。拆分后的任何提醒元素都将被忽略:

animals = ['cat', 'dog', 'bird', 'horse', 'pig', 'duck', 'frog', 'chicken', 'sheep', 'cow']
padding = max(map(len, animals)) + 2
groups = zip(*(iter(animals),) * 3)

for group in groups:
    print("".join(("{:%i}" % padding).format(a) for a in group))

答案 3 :(得分:0)

您可以逐步遍历列表,即每行的单词数。

然后,我使用[start:end]范围选择我想要的列表部分,并使用join()进行打印,这将加入列表中的所有项目,并在它们之间选择字符串。

然后我继续下一部分。

words = ['a','b','c','d','e','f','g','h','i','j']

def printNum(n, lst):
    start = 0
    end = start + n
    for line in lst[::n]:
        print "\t".join(lst[start:end])
        start = end
        end = start + n
print "3 words per line:"
printNum(3, words)

print "2 words per line:"
printNum(2, words)

输出:

3 words per line:
a       b       c
d       e       f
g       h       i
j

2 words per line:
a       b
c       d
e       f
g       h
i       j

答案 4 :(得分:0)

还有一个解决方案:

-a, --attach=[]            Attach to STDIN, STDOUT or STDERR