我正在创建一个十字架网格,并希望在二维阵列应用程序方面有一些反馈。这是使用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()
最好的办法。
不,你建议的方式不是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数组来表示网格。
以下是使用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)
这样的签名函数并使其可重用。
在这里,如果您将调用不带参数的函数,则
row
和col
的默认值将被视为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)