gpt4 book ai didi

python - 格式化二维网格中的路径打印

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:01 25 4
gpt4 key购买 nike

我有一个二维网格和一条穿过网格的路径,如下所示:

grid = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
path = [(0, 0), (1, 0), (2, 0), (2, 1), (2, 2)]

我想要的结果是一个格式良好的输出,描绘了具有所示路径的网格:

  *1   2   3
*4 5 6
*7 *8 *9

作为 Python 的新手,我并不完全了解如何利用列表理解和字符串格式化来发挥我的优势。

这是我目前所拥有的:

def print_path(grid, path):
print('\n'.join(''.join(['{:4}'.format(val) for val in row]) for row in grid))

--- Output ---

1 2 3
4 5 6
7 8 9

我在路径中的特定元素之前获取星号的想法是将实际的网格元素映射到应该在结果中使用的字符串表示形式,因此:

1 => "*1"
2 => "2"
...
9 => "*9"

总的来说,Python 的语法令人难以抗拒。我试图写得更像 Python-er,而不是 Java-er(我喜欢的)。任何提示/提示/解决方案将不胜感激!

最佳答案

您可以使用嵌套列表推导式和帮助您选择星标的字典,以防索引在您的路径中或为空字符串。

In [36]: choose = {True: '*', False:''}
In [37]: print('\n'.join([' '.join(["{}{}".format(choose[(ind, i) in path], j) for i, j in enumerate(sub)]) for ind, sub in enumerate(grid)]))
*1 2 3
*4 5 6
*7 *8 *9


#Here is the broken version for more readability:

#'\n'.join([' '.join(
# ["{}{}".format(choose[(ind, i) in path], j)
# for i, j in enumerate(sub)])
# for ind, sub in enumerate(grid)])

关于python - 格式化二维网格中的路径打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com