大多数Python可能需要将嵌套列表传递到格式中
通过此考试的最佳方式是:大多数Python可能需要将嵌套列表传递到格式中,python,python-3.x,Python,Python 3.x,通过此考试的最佳方式是: board = [['X','o','o','o','o','X'], ['X','o','o','_','_','X'], ['X','o','o','_','_','X'], ['X','o','o','o','X','X'], ['X','o','o','o','X','X'], ['X','o','o','_','X','X'], ['_','o','o','o','X','X']] 为此: """ ╔═══╦═══╦═══╦═══╦═══╦═══╦═
board = [['X','o','o','o','o','X'],
['X','o','o','_','_','X'],
['X','o','o','_','_','X'],
['X','o','o','o','X','X'],
['X','o','o','o','X','X'],
['X','o','o','_','X','X'],
['_','o','o','o','X','X']]
为此:
"""
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║ {} ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
"""
有格式吗?注意:列表在线路板定义中是垂直的,因此简单的for循环不起作用。假设
board
是线路板,而fmt
是格式字符串,在使用任意方法展平后,使用*
将其解压缩,如生成器表达式:
>>> print(fmt.format(*(item for row in board for item in row)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
或itertools.chain.from\u iterable
:
>>> import itertools
>>> print(fmt.format(*itertools.chain.from_iterable(board)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
或者您可以使用普通的itertools.chain
并首先使用*
打开板的包装:
>>> import itertools
>>> print(fmt.format(*itertools.chain(*board)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
假设board
是板,而fmt
是格式字符串,则在使用任意方法(如生成器表达式)展平后,使用*
将其解压缩:
>>> print(fmt.format(*(item for row in board for item in row)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
或itertools.chain.from\u iterable
:
>>> import itertools
>>> print(fmt.format(*itertools.chain.from_iterable(board)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
或者您可以使用普通的itertools.chain
并首先使用*
打开板的包装:
>>> import itertools
>>> print(fmt.format(*itertools.chain(*board)))
╔═══╦═══╦═══╦═══╦═══╦═══╦═══╗
║ X ║ o ║ o ║ o ║ o ║ X ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ o ║ _ ║ _ ║ X ║ X ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ _ ║ _ ║ X ║ X ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ o ║ X ║ X ║ X ║ o ║ o ║ o ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ X ║ X ║ o ║ o ║ _ ║ X ║
╠═══╬═══╬═══╬═══╬═══╬═══╬═══╣
║ X ║ _ ║ o ║ o ║ o ║ X ║ X ║
╚═══╩═══╩═══╩═══╩═══╩═══╩═══╝
您可能希望使用坐标元组稍微重新定义示例,以便我们可以看到行和列的结束位置。您可能希望使用坐标元组稍微重新定义示例,以便我们可以看到行和列的结束位置。