在列表理解中转义“\n”新行与 Python 中的 for 循环
Escaping "\n" new line in list comprehension vs for loop in Python
在 Python
的列表理解中转义“\n”新行
for循环
string_grid = ''
for i in self.board:
string_grid += "\n" + str(i)
return string_grid
Returns:
[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])
returns 这个:
['\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]']
我已经尝试让它工作很长时间了,但无论我做什么,新行都没有在标准输出中被转义。
在第一个示例中,您创建了一个字符串,在第二个示例中创建了一个列表。
您必须将列表加入字符串:
return ''.join("\n{0}".format(col) for col in self.board)
这可能对您有帮助:
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
在 Python
的列表理解中转义“\n”新行for循环
string_grid = ''
for i in self.board:
string_grid += "\n" + str(i)
return string_grid
Returns:
[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])
returns 这个:
['\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]']
我已经尝试让它工作很长时间了,但无论我做什么,新行都没有在标准输出中被转义。
在第一个示例中,您创建了一个字符串,在第二个示例中创建了一个列表。
您必须将列表加入字符串:
return ''.join("\n{0}".format(col) for col in self.board)
这可能对您有帮助:
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