代码是我在创建十字网格程序时使用的最佳实践

问题描述 投票:2回答:2

我正在创建一个十字架网格,并希望在二维阵列应用程序方面有一些反馈。这是使用2d数组创建十字网格的最佳方法。

Heres the output of my Crosses grid

但是当它来到2D阵列时,我不知道这是否是最好的方法。当我把输入放在数组中时,我遇到了麻烦,所以我把它留了出来。

arr1 = [[], []]
arr1[0] = xrow
arr1[1] = ycolumn

for i in range(0, arr1[0]):
  for j in range(0, arr1[1]):
    print("X", end="")
  print()
python
2个回答
0
投票

最好的办法。

不,你建议的方式不是pythonic。当具有不同名称的固定数量的项目(例如矩形大小)时,我们更喜欢使用元组而不是列表。这是您重构的代码,用于传递元组,并使用较小的变量重命名。

def display_rectangle(size):
    height, width = size  # tuple unpacking
    for i in range(height):
        for j in range(width):
            print('X', end='')
        print('')

size = (4, 5)
display_rectangle(size)

使用end选项效果很好,它为两个维度产生了很好的并行结构。但您可能更喜欢略短的版本:

def display_rectangle(size):
    height, width = size
    for i in range(height):
        print('X' * width)

如果您开始更改矩形内的元素,例如制作一个带有矩形边框的空心框,那么您可能希望使用numpy数组来表示网格。


0
投票

以下是使用list comprehension执行此任务的单行语句。

'\ n'.join([(“X”* col)for i in range(row)])

>>> # One line statement to generate the rectangular GRID
... 
>>> col = 4
>>> row = 5
>>> 
>>> grid = '\n'.join([("X" * col) for i in range(row)])
>>> 
>>> print(grid)
XXXX
XXXX
XXXX
XXXX
XXXX
>>> 

正如我们所看到的,上面的一个不可重用,所以最后你可以编写一个像generate_grid(row=5, col=5)这样的签名函数并使其可重用。

在这里,如果您将调用不带参数的函数,则rowcol的默认值将被视为5

让我们看看在Python交互式终端上执行的一些示例。

def generate_grid(row=5, col=5):
    """
    Description
    ===========
        This function returns a GRID to the caller

    Parameter
    =========
        row: number of rows in GRID
        col: number of columns in GRID

    Note: 5 is default value for row & col (if no parameters are supplied)
    """

    return '\n'.join([("X" * col) for i in range(row)])

现在,我们将通过提供至少qazxsw poi和atmost qazxsw poi参数来调用(重用)上述函数。

测试1

0

产量

2

测试2

grid = generate_grid()#默认值将被视为5(此处)print(grid)

产量

grid = generate_grid(6, 5)
print(grid)
© www.soinside.com 2019 - 2024. All rights reserved.