Использование .join (), чтобы закрасить все, кроме первого столбца в массиве в Python - PullRequest
0 голосов
/ 29 апреля 2018

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

for row in board:    
    print row[0] + " " + " ".join(colored(element, element_colors[element])
                                  for element in row[1:])

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

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

[1] [W] [W] [W] [W] [W] [W] [W] [W]
[2] [W] [W] [W] [W] [W] [W] [W] [W]
[3] [W] [W] [W] [W] [W] [W] [W] [W]
[4] [W] [W] [W] [W] [W] [W] [W] [W]
[5] [W] [W] [W] [W] [W] [W] [W] [W]
[6] [W] [W] [W] [W] [W] [W] [W] [W]
[7] [W] [W] [W] [W] [W] [W] [W] [W]
[8] [W] [W] [W] [W] [W] [W] [W] [W]

Где 1-8 не окрашены цветной функцией, и все пробелы [W]:

Таким образом, я могу сохранить небольшой словарь elements_color:

element_colors = {'[X]': 'red', '[H]': 'magenta', '[W]': 'cyan'}

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Другим способом было бы склеить их вместе с +

' '.join([row[0]] + [colored(e, element_colors[e]) for e in row[1:]])
0 голосов
/ 29 апреля 2018

Вы можете enumerate последовательность:

' '.join([element if index == 0 else colored(element, element_colors[element])
          for index, element in enumerate(row)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...