2017-01-07 17 views
2

первый раз здесь.
Я сделал немного поиска самостоятельно до , но вопрос
Я не смог найти точный ответ на него.
Я делал такие вещи раньше в C/C++, но здесь я немного смущен.Python - печать 2 мерных массивов в колонках

Я хочу напечатать это:

table = [ ['A','B','C','D'], ['E','F','G','H'], ['I','J','K','L'] ] 

таким образом:

'A' 'E' 'I' 
'B' 'F' 'J' 
'C' 'G' 'K' 
'D' 'H' 'L' 

автоматически, в цикле.
Первая переменная из каждой таблицы в первой строке, вторая во второй строке и т. Д.
Я пробовал с 2 циклами, но я делаю это неправильно, потому что у меня заканчиваются индексы.

EDIT - эта часть решена, но еще один вопрос

у меня есть:

tableData = [ ['apple', 'orange', 'cherry', 'banana'], 
       ['John', 'Joanna', 'Sam', 'David'], 
       ['dog', 'cat', 'mouse', 'rat'] ] 

и он должен выглядеть следующим образом:

| apple | John | dog | 
| orange | Joanna | cat | 
| cherry | Sam | mouse | 
| banana | David | rat | 
функция

»должна быть в состоянии управлять списки с разной длиной и
подсчитайте, сколько места требуется для строки (для каждого столбца отдельно) ".
Каждая строка должна быть сосредоточена в столбце.

Я попытался напечатать предыдущую таблицу, имеющую архивный объект

for row in zip(*table): 
    print('| ', ' | '.join(row), ' |') 

| A | E | I | 
| B | F | J | 
| C | G | K | 
| D | H | L | 

, но я из идей, что будет дальше в этой ситуации

+0

Это редактирование достаточно велико, чтобы вы действительно поставили это в новый вопрос и приняли то, что получили за первое. Для редактирования требуется другая итерация для определения ширины столбцов и использование форматирования строк для центровки по строкам с полями. Поэтому речь идет не только о расширении всех «объединений». – hpaulj

ответ

5

Вы можете zip(), str.join() и print:

In [1]: table = [ ['A','B','C','D'], ['E','F','G','H'], ['I','J','K','L'] ] 

In [2]: for row in zip(*table): 
    ...:  print(" ".join(row)) 
    ...:  
A E I 
B F J 
C G K 
D H L 

Или однострочное исполнение, соединяющее строки с символом новой строки:

>>> print("\n".join(" ".join(row) for row in zip(*table))) 
A E I 
B F J 
C G K 
D H L 
+0

Спасибо, отлично работает;) – wisnia

0

Здесь вы делаете это, независимо от того, какая информация в списке.

table = [["a","b","c","d"],["e","f","g","h"],["i","j","k","l"]] 
max = len(table[0]) 
max2 = len (table) 
string = [] 

for a in range(0,max): 
    for b in range(0,max2): 
     if len(string) == max2: 
      string = [] 
     string.append(table[b][a]) 
    print string