есть ли способ сделать колонки без панд?

#python

Вопрос:

В настоящее время у меня есть список списков, и мне нужно поместить их в столбцы, но я не могу использовать панд для создания столбцов. В настоящее время у меня есть список списков, который выглядит следующим образом:

 list_a = [['face1', 'face2', 'object', 'scene'], ['1', '7', '6', '5'], ['4', '3', '2', '8'], ['1', '3', '2', '4'], ['1', '2', '3', '4']]
 

и я хочу, чтобы это выходило в таких колонках, как эта

 face1  face2  object   scene
  1      4      1        1
  7      3      3        2
  6      2      2        3
  5      8      4        4
 

Комментарии:

1. Есть ли у вас какие-либо требования к выравниванию?

2. Какой код вы уже пробовали? (Так что, как я уверен, вы знаете, это не должна быть служба написания кода.)

3. Это всего лишь вопрос форматирования строк. for x in list_a: print(*x, sep='t') этого достаточно, если вас не очень волнует точное форматирование.

4. Вы уверены, что порядок столбцов-это то, что вам нужно ? Это не то, как Панды делают столы. В этом случае перед печатью вам следует переставить столбцы.

Ответ №1:

Вы можете использовать форматирование строк для печати столбцов.

 for row in list_a:
    print(''.join(f'{x:^8}' for x in row)) # 8-character wide centered columns

# output
face1   face2   object  scene  
   1       7       6       5    
   4       3       2       8    
   1       3       2       4    
   1       2       3       4    
 

Ответ №2:

попробуйте использовать center :

 list_a = [['face1', 'face2', 'object', 'scene'], ['1', '7', '6', '5'], ['4', '3', '2', '8'], ['1', '3', '2', '4'],
          ['1', '2', '3', '4']]

for item in list_a:
    for subitem in item:
        print(subitem.center(10), end='')
    print()
 

выход :

   face1     face2     object    scene   
    1         7         6         5     
    4         3         2         8     
    1         3         2         4     
    1         2         3         4  
 

Примечание : Если ваш список содержит значение, отличное от string, не забудьте преобразовать его в string перед вызовом .center :

 print(str(subitem).center(10), end='')