在Python 2.7中,我有一个包含数字1-25的字符串的列表(例如)。打印时,我希望列表打印5行,每行5个数字。
理想情况下:
>>> print(myList)
['1', '2', '3', '4', '5'
'6', '7', '8', '9', '10',
...
...
'21', '22', '23', '24', '25']
我知道如果必须,我可以在myList中简单地创建五个单独的列表并调用
print(myList[0])
print(myList[1])
...
但我真的想避免这种情况。
提前致谢!
答案 0 :(得分:2)
您必须滚动自己的表示功能,例如
def wrap_list(lst, items_per_line=5):
lines = []
for i in range(0, len(lst), items_per_line):
chunk = lst[i:i + items_per_line]
line = ", ".join("{!r}".format(x) for x in chunk)
lines.append(line)
return "[" + ",\n ".join(lines) + "]"
使用示例:
>>> print wrap_list(map(str, range(25)))
['0', '1', '2', '3', '4',
'5', '6', '7', '8', '9',
'10', '11', '12', '13', '14',
'15', '16', '17', '18', '19',
'20', '21', '22', '23', '24']
答案 1 :(得分:1)
这是一个使用for循环的简洁解决方案:
for n, val in enumerate(myList, 1):
print val,
if n % 5 == 0:
print "\n"
if n % 5:
print "\n" # end the last line, if any
枚举从1开始,以避免在开始时出现错误的换行符。
答案 2 :(得分:0)
我认为没有任何现成的功能用于此目的,您可能仍需要拆分原始列表,或编写自己的打印功能。通过拆分原始列表有一个简单的解决方案:
import pprint
pprint.pprint([l[i:i+5] for i in xrange(0, len(l), 5)])
但是,它仅适用于长度为5的列表(或您在自己的版本中指定的任何其他整数),它无法处理任意长度的列表。对于那种情况,您可能需要自己的打印功能。
答案 3 :(得分:0)
我看到了这个,想写一个丑陋的单行,所以这里是:
>>> l = range(25)
>>> w = 5
>>> print '\n'.join([str(x) for x in [l[i:i + w] for i in range(0, 25, w)]])
[0, 1, 2, 3, 4]
[5, 6, 7, 8, 9]
[10, 11, 12, 13, 14]
[15, 16, 17, 18, 19]
[20, 21, 22, 23, 24]
把它作为一个想法
答案 4 :(得分:0)
Python标准库提供textwrap
,您可以将其用作:
from textwrap import fill
myList = [str(x) for x in range(25) ]
print(fill(str(myList), width=20) )
答案 5 :(得分:-1)
以下是你们中的一位:
for i in range(len(myList)):
if i != 0 and i % (len(myList)/numOfLines) == 0:
print '\n'
print myList[i],