2015-08-04 4 views
1

У меня есть функция, которая передается список int и нужная длина строки. Предполагается, что длина данных равномерно делится на длину строки. Все Интс в списке не представляют байт, так что они больше не являются чем 3 цифры, и не меньше 0. При этом не моя функция:Печать серии списков с выровненными столбцами

def pprint(data, rowlen): 
    # Prints out the list in a nice grid format 
    print '-' * 50 
    for index in range(0, len(data), rowlen): 
     print data[index:(index+rowlen)] 
    print '-' * 50 
    return data 

Результат выглядит примерно так:

[0, 0, 2, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 0] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 0, 0, 0, 0, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0] 

Как вы можете видеть, этот вид работ, но я хотел бы что-то больше, как это:

[0 , 0 , 2 , 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0 , 0 ] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0 , 0 , 0 , 0 , 0 , 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139] 
[139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0 ] 

Таким образом, все данные выровнены в табличном формате и легко увидеть, где все.

Есть ли простой способ достичь этого без необходимости повторять каждую запись и вставлять пробелы.

ответ

2

Использование string.format

data = [i for i in range(0, 200)] 

    def pprint(data, rowlen): 
     print '-' * 50 
     for index in range(0, len(data), rowlen): 
      print ['{:3}'.format(i) for i in data[index:(index+rowlen)]] 
     print '-' * 50 
     return data 

    pprint(data, 10) 
+0

Это не работает. Вывод точно такой же, как и раньше. Я запустил его в изолированной консоли со случайно созданным списком и получил те же результаты. – Sawyer

+1

Теперь он должен работать –