Как я могу добавить новую строку, которая показывает количество столбцов в моем коде - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть списки, как показано ниже:

l1=['N  N  N  N  M  M  M  W  W  N  W  W','N  W  W  W  N  N  N  N  N  N  N  N']
l2=['A','B','C','D','E','F']

И вот мой код:

for i in range(len(l1)):
    print(l2[i],l1[i])

Мой вывод:

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N

Я хочувывод такой (без использования сторонних библиотек):

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N
  0  1  2  3  4  5  6  7  8  9 10 11

Я пробовал что-то подобное, но это не сработало:

l3=[j for j in l1[0] if j!=' ']
print("  ",end='')
for k in range(len(l3)):
    print("{}  ".format(k),end='')

и вывод такой:

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N
  0  1  2  3  4  5  6  7  8  9  10  11 

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

В Python 3.6+ вы можете использовать форматированные строковые литералы ( PEP489 ):

l1 = ['N  N  N  N  M  M  M  W  W  N  W  W', 'N  W  W  W  N  N  N  N  N  N  N  N']
l2 = ['A','B','C','D','E','F']

for i, j in zip(l2, l1,):
    print(f'{i:>3}', end='')
    j_split = j.split()
    for val in j_split:
        print(f'{val:>3}', end='')
    print('\n', end='')

print(f'{"":>3}', end='')
for idx in range(len(j_split)):
    print(f'{idx:>3}', end='')

Результат:

  A  N  N  N  N  M  M  M  W  W  N  W  W
  B  N  W  W  W  N  N  N  N  N  N  N  N
     0  1  2  3  4  5  6  7  8  9 10 11
0 голосов
/ 10 декабря 2018

Полагаю, вы хотите, чтобы символы и цифры были выровнены по правому краю.Измените форматирование последней строки

print('{}'.format(..))

на

print(' { :>n}'.format(..))

Где n в этом случае - 2.

Ответ основан на Python: Форматвыходная строка, выравнивание по правому краю

0 голосов
/ 10 декабря 2018

Я решил проблему, используя форматирование строки:

l3=[j for j in l1[0] if j!=' ']
for k in range(len(l3)):
    print('%3s'%" {}".format(k),end='')

Вывод:

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N
  0  1  2  3  4  5  6  7  8  9 10 11
...