0

我正在用 Python 构建一个函数,并且我已经配置了一些可以工作的东西,但是效率很低。

if board[0][0] == 1:
    detailed[1][2] = "X"
if board[1][0] == 1:
    detailed[3][2] = "X"
if board[2][0] == 1:
    detailed[5][2] = "X"
if board[0][1] == 1:
    detailed[1][6] = "X"
if board[1][1] == 1:
    detailed[3][6] = "X"
if board[2][1] == 1:
    detailed[5][6] = "X"
if board[0][2] == 1:
    detailed[1][10] = "X"
if board[1][2] == 1:
    detailed[3][10] = "X"
if board[2][2] == 1:
    detailed[5][10] = "X"

我知道我可以使用 for 循环使它看起来更好/更高效,但几乎立即卡住了。到目前为止,这就是我所拥有的:

for x in range(3):
    for y in range(3):
        if board[y][x] == 1:

这处理每个 if 语句的第一部分,但不处理 detail[][] = "X" 行。有一个可见的模式,但我不知道如何利用它来发挥我的优势。

谢谢您的帮助。

4

2 回答 2

0

如果你没有结婚,就不需要 for 循环。假设您可以使用 numpy 数组:

import numpy as np

board = np.array(board)     # if they aren't already numpy arrays
detailed = np.array(board)
mask = board[0:3, 0:3] == 1
detailed[1:7:2, 2:11:4][mask] = 'X'
于 2019-01-15T19:47:58.493 回答
0

如果我理解逻辑正确,这应该给你你想要的:

for x in range(3):
    for y in range(3):
        if board[x][y] == 1:
            detailed[x*2 + 1][y*4 + 2] = 'X'
于 2019-01-15T19:07:07.300 回答