你如何制作2d网格?接下来,如何用其他东西替换该网格中的随机元素?
我试过了:
def introgrid( ):
anyrow = 0
print(columnrow)
grid = [symbol for r in range(column)]
grid2 = (grid[0]+" ")*15
for i in range(row):
print(grid2+str(anyrow))
anyrow+=1
symbol= "."
columnn= 15
row= 12
rowcount = 0
columnrow = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14"
这会生成一个网格,但它不允许您随机更改它的元素。帮助!
答案 0 :(得分:2)
要制作2D数组,您可以编写
width = 10
height = 5
grid= [[0 for x in range(width)] for x in range(height)]
要访问网格中的项目,只需输入grid[x][x]
,其中x是您的位置
修改的
我发现其他答案很复杂。这实际上给你一个网格。这只是你如何呈现数据的问题。
要打印 2D数组作为网格表示,您只需遍历数组
for item in grid:
row = ''
for subitem in item:
row += str(subitem) + ' '
print row
要更改数组中的每个值,您可以执行以下操作:
for index, item in enumerate(grid):
for subindex, subitem in enumerate(item):
grid[index][subindex] = random.randint(0, 10)
答案 1 :(得分:0)
通常,我看到网格在列表中表示为列表。即如果你想制作以下网格:
A0 B0 C0
A1 B1 C1
A2 B2 C2
你会像这样代表它(请记住python中的数组/列表是zero-indexed:
[[A0, B0, C0],
[A1, B1, C1],
[A2, B2, C2]]
这类事情当然有多种变化。我们想到的一个例子是,您可以将每一行存储为对象的单独编号属性。由于您在示例中使用了列表(数组),因此我假设您要使用基于列表的表示。
我知道的变量如下:column
是网格x轴上的列数,而y轴上的行数是row
。通常,最好使变量名尽可能清晰,因此我将改为使用num_rows
和num_cols
。
如果要创建网格,首先要实例化行,然后将列添加到每一行。您可以使用列表推导,但这些可能更难以读取for循环。使用for循环,你可以像这样制作一个网格:
SYMBOL = '.' # it is convention in python to name constants in ALL CAPS
grid = []
for x in range(num_rows):
grid.append([])
for y in range(num_cols):
grid[x].append(SYMBOL)
要访问随机元素,只需使用python的内置random number generator。
from random import randint
row = randint(0,num_rows-1)
col = randint(0,num_cols-1)
value = 'whatever you want to put in the random cell'
grid[row][col] = value
答案 2 :(得分:0)
您可以使用.join()
类的string
方法连接每行的一些随机符号,然后打印而不是点。可以使用函数random.choice(list)
获得随机符号,该函数随机返回进入list
的元素。这是您的案例的应用程序,其中list
是可用的大写字符和数字。您可以使用它来选择不同的随机符号。
import string
import random
% Grid dimensions and column numbers
cols = 15
rows = 12
column = ' '.join(str(i).zfill(2) for i in range(cols))
% Turn the basic symbol into a string
basic_symbol= '.'
grid = ' '.join(basic_symbol for i in range(cols))
% Display the grid
print(column)
for i in range(rows):
randgrid = ' '.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(cols))
print randgrid + ' ' + str(i).zfill(2)