以网格格式打印字符串列表 - Python

时间:2015-09-08 14:47:01

标签: python list grid

虽然这个问题与其他几个问题类似,但许多现有答案对我来说太难以理解了。

无论如何,我只是想知道是否有办法打印列表,如:["a", "b", "c", "d"]格式(在python IDLE中),

像这样......

a b
c d

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

这是一种方法:

l = ["a", "b", "c", "d"]

def printGrid (numsPerRow, l):
    printStr = ""
    numsInRow = 1
    for i in range(len(l)):

        item = l[i]
        if numsInRow % numsPerRow == 0:
            printStr += "{0}\n".format(item)
            numsInRow = 1
        else:
            printStr += "{0}\t".format(item)
            numsInRow += 1
    return printStr

print printGrid(2, l)

或者你可以使用列表而不是字符串操作:

l = ["a", "b", "c", "d"]

def printGrid (numsPerRow, l):
    copyL = l[:]
    numsInRow = 1
    for i in range(len(l)):
        if numsInRow % numsPerRow == 0:
            copyL[i] = copyL[i] + "\n"
            numsInRow = 1
        else:
            copyL[i] = copyL[i] + "\t"
            numsInRow += 1
    return copyL

print "".join(printGrid(2, l)) ,
print l

答案 1 :(得分:0)

您可以使用for循环,step等于您的网格宽度和切片,将您的字符加入字符串,其间有空格。在我的解决方案而不是字符列表我应用字符串。 String ==字符列表。不要忘记这一点。

>>> strq
'abcdefghijk'

这将是您的代码:

>>> n = 3
>>> for el in range(0,len(strq),n):
...     if el < len(strq)-(n-1):
...         print ' '.join(list(strq[el:el+n]))
...     else:
...         print ' '.join(list(strq[el:]))
... 
a b c
d e f
g h i
j k
>>> n = 4
>>> for el in range(0,len(strq),n):
...     if el < len(strq)-(n-1):
...         print ' '.join(list(strq[el:el+n]))
...     else:
...         print ' '.join(list(strq[el:]))
... 
a b c d
e f g h
i j k
>>>