我正在创建一个十字网格,希望对2d数组应用程序有一些反馈。这是使用2d数组创建交叉网格的最佳方法。
Heres the output of my Crosses grid
但是当涉及到二维数组时,我不知道这是否是最好的解决方法。我将输入放入数组时遇到了麻烦,所以我将其遗漏了。
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()
答案 0 :(得分: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数组来表示网格。
答案 1 :(得分: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)
,使其可重用。
在这里,如果您将调用不带参数的函数,则
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)])
现在,我们将通过提供至少0
和最多2
个参数来调用(重用)上述函数。
测试1
grid = generate_grid(6, 5)
print(grid)
输出
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
测试2
grid = generate_grid()#默认值将取为5(此处) 打印(网格)
输出
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX