在Python中使用.join()为数组中除第一列以外的所有列着色

在Python中使用.join()为数组中除第一列以外的所有列着色,python,python-2.7,Python,Python 2.7,我试图在第一列之后为数组的所有元素着色。我终于让它发挥作用了,但我知道有更多的“python”方法可以做到这一点,并寻求一些建议: for row in board: print row[0] + " " + " ".join(colored(element, element_colors[element]) for element in row[1:]) 任何关于如何以一种更具python风格的方式执行此操作

我试图在第一列之后为数组的所有元素着色。我终于让它发挥作用了,但我知道有更多的“python”方法可以做到这一点,并寻求一些建议:

for row in board:    
    print row[0] + " " + " ".join(colored(element, element_colors[element])
                                  for element in row[1:])
任何关于如何以一种更具python风格的方式执行此操作的建议都将不胜感激

编辑: 所需输出如下:

[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]空间均为

这样,我可以保持元素的颜色字典小:

element_colors = {'[X]': 'red', '[H]': 'magenta', '[W]': 'cyan'}
您可以选择以下顺序:

' '.join([element if index == 0 else colored(element, element_colors[element])
          for index, element in enumerate(row)])

另一种方法是用
+

' '.join([row[0]] + [colored(e, element_colors[e]) for e in row[1:]])

这个问题实际上不是关于着色或连接,而是有效地转换序列中除第一个元素以外的所有元素。我认为除了传递
。连接
一个列表理解而不是生成器表达式之外,没有太大的改进空间。我想您可以使用
iter
来避免切片
列表,但这会使代码变长一点。欢迎使用。在一个可验证的最小工作示例中进行转换会很好。也就是说,它应该包括一些示例输入,一些输出,包括您认为正确的原因。@juanpa.arrivillaga很好。我假设这是用于某种游戏板,所以列表长度可能很小。顺便说一句,Python 2将在2020年结束,所以你真的应该使用Python 3,除非你需要Python 2来处理遗留代码。太棒了!非常感谢。我只是不喜欢串接字符串,并且知道有一种方法可以在列表理解中结合这一点。我喜欢这个答案,因为它与其他答案相同,但是文本较少。