Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中创建类似网格的数据结构?_Python - Fatal编程技术网

如何在python中创建类似网格的数据结构?

如何在python中创建类似网格的数据结构?,python,Python,我需要做的是 Col 0 Col 1 Col 2 Row 0 1 0 1 Row 1 1 1 1 Row 2 1 1 1 这些数字完全是随机的,但我完全被困在如何制作电路板的问题上。问题是我需要能够在以后的列和行中添加数字。我是否必须先将其列在列表中,然后让他们将其隔开,还是保持原样,然后用\t将其隔开 我只有一个随机数发生器。我不知道下一步该怎么办 d

我需要做的是

          Col 0   Col 1   Col 2 
Row 0       1       0       1 
Row 1       1       1       1 
Row 2       1       1       1
这些数字完全是随机的,但我完全被困在如何制作电路板的问题上。问题是我需要能够在以后的列和行中添加数字。我是否必须先将其列在列表中,然后让他们将其隔开,还是保持原样,然后用\t将其隔开

我只有一个随机数发生器。我不知道下一步该怎么办

def generate_random_number(size):
  number = ""
  for i in range(size):
    digits = random.randint(0, 1)
    numbers = number + str(digits)
  return numbers

我的建议是:选择数据结构,以便以合理的方式轻松处理数据。然后您可以决定如何可视化数据,但这不应影响数据结构的选择

在这种情况下,将电路板存储为列表列表或整数元组的元组可能是合理的

然后你可以写,例如:

def row_sum(table, i):
    return sum(table[i])

def col_sum(table, i):
    return sum(row[i] for row in table)

def print_table(table):
    print ' '*colsize + '\t' + '\t'.join('Col {}'.format(i) for i, _ in enumerate(t))
    for i, row in enumerate(t):
        print 'Row {}'.format(i).ljust(colsize), '\t'.join(str(v).rjust(colsize) for v in row)

看看这个代码示例会有帮助吗

x = []
for row in range(10):
    x.append([])

for row in x:
   for col in range(10):
       row.append(0)
这将使用元组创建一个10x10的零网格。实际上,它是一个包含十个元组的元组,每个元组包含十个数字

有用提示,请键入以下内容:

print(x)
import pprint
pprint.pprint(x)
然后键入以下内容:

print(x)
import pprint
pprint.pprint(x)

你会看到区别的。pprint代表漂亮的印刷品

我想你在寻找类似二维数组的东西。在python中,可以使用列表列表来创建所描述的结构

#first a list of lists

grid=[[],[],[]]

#you can use it like this

#       |  Col 0        | Col 1        | Col 2
#---------------------------------------------------
# Row 0 |  grid[0][0]=1 | grid[0][1]=0 | grid[0][2]=1
# Row 1 |  grid[1][0]=1 | grid[1][1]=1 | grid[1][2]=1
# Row 2 |  grid[2][0]=1 | grid[2][1]=1 | grid[2][2]=1
将行或列中的数字相加非常简单:

def sum_row(row):
  return grid[row][0]+grid[row][1]+grid[row][2]

def sum_column(column):
  return grid[0][column]+grid[1][column]+grid[2][column]
此外,我不明白你在用随机数函数做什么。看起来您希望返回随机数的字符串版本,但当您尝试添加列或行的条目时,这将导致问题。然而,如果你真的想得到一个数字串,我会这样写:

  def generate_random_number(size):
    number=""
    for i in range(size):
      digit = random.randint(0, 1)
      number = number + str(digit)
    return number

我建议创建一个列表列表。其中,它本质上是一个行列表,然后每行都有一组单元格。下面的代码将用0或1的随机值填充它。还有一段代码向您展示了如何对行和列值求和

代码

输出


很难确定你在问什么。我想你也没有随机数发生器。正如帖子所说:未定义的变量数字。你的generate_random_number函数不仅缺少一个局部变量数字,而且每次循环执行时都会覆盖数字变量,这当然不是你想要的…代码可以更改,这样输出就没有方括号和逗号了吗?当然可以看看Lev Levitsky,他使用相同的数据结构,并且以一种你可以完全控制的方式打印。代码可以更改,这样输出就没有方括号和逗号了吗?不是真的。如果你用python打印出一个数据结构,它就会有这些东西。如果你想打印出与你在问题中所展示的一模一样的东西,你就必须用打印语句手工完成。在这种情况下,我只能说,如果您编写printx,end=,它将不会在之后添加换行符。在python 2.x中,只需在print语句后添加一个逗号,即print x,感谢您帮助修复我的编码: