Python 如何在不使用numpy的情况下创建零矩阵?

Python 如何在不使用numpy的情况下创建零矩阵?,python,Python,找遍了所有地方,但如果不是在numpy上,似乎找不到信息。 需要使用python而不是numpy创建一个3 x 6的零矩阵&以使输出看起来完全像这样: Matrix 3 by 6 with 0's: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 我假设您知道如何用python制作列表:my_list=[0,0,0]。要创建列表列表,我们可以将列表定义嵌套在另一个列表中:nested_list=[[0,0,0],[0,0,0]]。很明

找遍了所有地方,但如果不是在numpy上,似乎找不到信息。 需要使用python而不是numpy创建一个3 x 6的零矩阵&以使输出看起来完全像这样:

Matrix 3 by 6 with 0's:
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00

我假设您知道如何用python制作列表:
my_list=[0,0,0]
。要创建列表列表,我们可以将列表定义嵌套在另一个列表中:
nested_list=[[0,0,0],[0,0,0]]
。很明显,您不想把整个过程都写出来,所以我们可以将其抽象为一个函数:

def make_zero(n_行:int,n_列:int):
矩阵=[]
对于范围内的i(n_行):
matrix.append([0]*n_列)
返回矩阵
这将生成一个外部列表,然后将内部列表(“行”)一次添加一个。这是一个非常清晰的定义,无论您使用Python的级别如何,但如果您想使用列表理解,可以将其缩短一点:

def make_zero(n_行:int,n_列:int):
返回[[0]*n列,用于范围内的(n行)]
请注意,这里的内部列表是指行,因此您可以轻松访问行:

matrix=make_零(3,6)
矩阵[0]#第一行
但是,“列”由每行中的一个元素组成;现在还没有一个列表,所以如果你想得到第一列,你必须做如下的事情

col0 = [row[0] for row in matrix]

您可以编写一个helper函数来简化这一过程,但很快您就可以为所有常见的矩阵/数组操作编写helper函数,然后您将重新发明
numpy
已经做得非常好的轮子。

我想您知道如何在python中创建列表:
my_list=[0,0,0]
。要创建列表列表,我们可以将列表定义嵌套在另一个列表中:
nested_list=[[0,0,0],[0,0,0]]
。很明显,您不想把整个过程都写出来,所以我们可以将其抽象为一个函数:

def make_zero(n_行:int,n_列:int):
矩阵=[]
对于范围内的i(n_行):
matrix.append([0]*n_列)
返回矩阵
这将生成一个外部列表,然后将内部列表(“行”)一次添加一个。这是一个非常清晰的定义,无论您使用Python的级别如何,但如果您想使用列表理解,可以将其缩短一点:

def make_zero(n_行:int,n_列:int):
返回[[0]*n列,用于范围内的(n行)]
请注意,这里的内部列表是指行,因此您可以轻松访问行:

matrix=make_零(3,6)
矩阵[0]#第一行
但是,“列”由每行中的一个元素组成;现在还没有一个列表,所以如果你想得到第一列,你必须做如下的事情

col0 = [row[0] for row in matrix]
您可以编写一个帮助函数来简化这一过程,但很快您就可以为所有常见的矩阵/数组操作编写帮助函数,然后您就可以重新发明
numpy
已经做得非常好的轮子了。

这样做:

rows, cols = 3,6
my_matrix = [([0]*cols) for i in range(rows)]
说明:

  • 表达式
    ([0]*cols)
    表示由列表表达式构建的列表中的每个元素(范围(行)中i的
    [([0]*cols)]
  • 该表达式
    ([0]*cols)
    生成一个一维的零列表(与
    cols
    的值一样多的零)
  • 因此,列表表达式有效地构建了一个一维列表,其中每个内部列表都有
    cols
    零。

    这是有效的:

    rows, cols = 3,6
    my_matrix = [([0]*cols) for i in range(rows)]
    
    说明:

  • 表达式
    ([0]*cols)
    表示由列表表达式构建的列表中的每个元素(范围(行)中i的
    [([0]*cols)]
  • 该表达式
    ([0]*cols)
    生成一个一维的零列表(与
    cols
    的值一样多的零)

  • 因此,列表表达式有效地构建了一个一维列表,其中每个内部列表都有
    cols
    零。

    当你说
    matrix
    时,你到底是什么意思?在
    numpy
    中,这是定义的。在Python中,没有“矩阵”类型。你想要一张名单吗?还是一组元组?内部列表应该是行还是列?无论您选择哪一个,访问这些矩阵切片都比访问其他矩阵切片更容易(例如,获取特定行比获取列更容易)。如果我使用的措辞不正确,请道歉。首先需要创建一个二维列表,其中包含行和列,行和列的常量为3和6Try:
    [[str('00')]*6]*3
    如果需要“00”,或者:
    [[0]*6]*3
    请参见相关问题-您的问题本质上是一个简单的问题,因为您希望所有值都相同(零)@hacker315:Your suggestion
    [[0]*6]*3
    通常会警告人们不要这样做,因为即使它构建了一个内部列表引用的外部列表,所有内部列表引用都引用同一个内部列表对象。因此,如果对一行进行了修改,那么它将有效地对所有行进行修改。当你说
    矩阵
    时,你的确切意思是什么?在
    numpy
    中,这是定义的。在Python中,没有“矩阵”类型。你想要一张名单吗?还是一组元组?内部列表应该是行还是列?无论您选择哪一个,访问这些矩阵切片都比访问其他矩阵切片更容易(例如,获取特定行比获取列更容易)。如果我使用的措辞不正确,请道歉。首先需要创建一个二维列表,其中包含行和列,行和列的常量为3和6Try:
    [[str('00')]*6]*3
    如果需要“00”,或者:
    [[0]*6]*3
    请参见相关问题-您的问题本质上是一个简单的问题,因为您希望所有值都相同(零)@hacker315:你的建议
    [[0]*6]*