不确定2-d列表如何在python中工作

时间:2015-11-17 21:30:17

标签: python list

需要制作6x8矩阵。在此矩阵中,需要为矩阵内的各个单元分配值,然后模拟加热/冷却系统。在我到达那里之前,我需要确保这是正确的。这是你如何制作行和列?打印时不显示这种方式是否重要?就像我说的那样,我需要为每个单元格分配值,是否有些已经通过我制作列表的方式具有值?有没有办法让列表没有任何初始值?

matrix = [] # Create an empty list
numberOfRows = 6
numberOfColumns = 8
for row in range(0, numberOfRows):
    matrix.append([]) # Add an empty new row
    for column in range(0, numberOfColumns):
        matrix[row].append(column)

print(matrix) 



[[0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]]

2 个答案:

答案 0 :(得分:3)

是的,这是一个很好的方法。但是,使用列表理解更加容易和更加pythonic:matrix = [list(range(numberOfColumns)) for _ in range(numberOfRows)]

是的,您可以制作一个没有价值的列表:[]list()

甚至是二维列表:[[]]

然而,没有用。

答案 1 :(得分:0)

您可以使用这种方式制作2D数组,但需要注意几点:

  • 您可以考虑将最后一行更改为matrix[row].append(0),将元素初始化为0(或-1)。 这主要是一种设计选择。例如,如果在您的程序中,稍后您没有更改每个位置的值,那么您将从初始化中获得旧值。
  • 您可以将range(0, numberOfRows)重写为range(numberOfRows);它默认从0开始。
  • 列表理解,正如Labo已经提到的那样