虽然这个问题与其他几个问题类似,但许多现有答案对我来说太难以理解了。
无论如何,我只是想知道是否有办法打印列表,如:["a", "b", "c", "d"]
格式(在python IDLE中),
a b
c d
任何帮助将不胜感激。感谢。
答案 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
>>>