逃避" \ n"列表理解中的新行与Python中的for循环

时间:2015-09-12 12:51:27

标签: python newline stdout list-comprehension

逃避" \ n" Python中列表理解中的新行

for loop

string_grid = ''
for i in self.board:
    string_grid += "\n" + str(i)
return string_grid

返回:

[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

列表理解

是怎么回事
return str(["\n" + str(col) for col in self.board])


返回:

['\n[0, 0, 0, 0, 0]', '\n[0, 0, 0, 0, 0]', '\n[0, 0, 0, 0, 0]', '\n[0, 0, 0, 0, 0]', '\n[0, 0, 0, 0, 0]']

我一直试图让它工作很长时间,但无论我做什么,新线都没有在标准输出中被转移。

2 个答案:

答案 0 :(得分:5)

在第一个示例中,您创建一个字符串,在第二个列表中。

您必须将列表加入字符串:

return ''.join("\n{0}".format(col) for col in self.board)

答案 1 :(得分:5)

这可能会对您有所帮助:

board = [[0] * 5] * 5       # Produce an empty board
print board                 # Display the board as a list of lists

print "\n".join([str(row) for row in board])

对于每一行,将电路板编号列表转换为文本表示。使用join函数将结果列表中的每一行与换行符连接起来。给出以下输出:

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

print替换为return