2016-02-25 73 views
2

我是相当新的Python中的行列表,并有一个很难搞清楚如何在给定的情况下,这些行打印的清单:打印在一组长度(Python)的

列表开始是空的,并计算机将生成随机的2位整数条目,然后将其附加到列表中。打印列表是很容易的,无论是在一列或使用

for i in list: 
    print(i, end = "") 

但我想要做的是打印4行一行,结束与任何其余的是列表(例如一排3),所以结果看起来像这样:

81 27 19 55 
99 45 32 90 
67 83 20 72 
12 86 21 

什么是最好和最直接的方法来做到这一点?

编辑:我忘了说明我正在Python 3中工作。对不起。

+0

我猜pprint是一个很好的抓 https://docs.python.org/2/library/pprint.html#pprint.PrettyPrinter 尝试与构造 – mitsest

+0

的宽度参数打将你的列表分成4块([链接1](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python), [链接2](http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks)),并打印每个块一条线。 – gil

回答

1

只需添加一个声明以换行符下降每4个项目:

count = 1 
for i in list: 
    print(i, end = "") 
    count += 1 
    if count % 4 == 0: 
     print('\n') 

如果你喜欢更好的索引:

for i in len(list): 
    print(list[i], end = "") 
    if i % 4 == 0: 
     print('\n') 

这是否能解决这个问题吗?

+0

为什么不'枚举'? – gil

+0

我保持技术水平低。您可能想要添加枚举作为备用答案。 – Prune

2

您可以使用模数运算符来识别何时位于第4列并将end值更改为print

for i, val in enumerate(list): 
    end = '\n' if (i + 1) % 4 == 0 else ' ' 
    print(val, end=end) 
1
for ind, val in enumerate(yourList): 
    if ind != 0 and ind % 4 == 0: 
     print('\n') 
    print(val, end=' ') 
0

如果这是一个数字的首发名单:

numbers = [81, 27, 19, 55, 99, 45, 32, 90, 67, 83, 20, 72, 12, 86, 21] 

我首先将它们组合成单独的列表:

grouped_numbers = [numbers[i:i+4] for i in range(0,len(numbers),4)] 

然后我会打印出各组它们之间的空白区域使用join函数

for group_of_numbers in grouped_numbers: 
    print (" ".join(map(str,group_of_numbers))) 
+0

OP似乎在使用python 3. – gil

+0

我对python 3中的运行进行了更改,没有发生错误 –

3

有许多方法可以做到这一点,正如其他人所表明的那样。还有一个:

for i in range(0, len(mylist), 4): 
    print(*mylist[i:i+4], sep=' ')