创建一个函数,使用所有元素[0]创建一个新的universum PYTHON

创建一个函数,使用所有元素[0]创建一个新的universum PYTHON,python,matrix,multidimensional-array,Python,Matrix,Multidimensional Array,我想在matlab中创建一个名为create_empty_universum的函数。此函数将创建一个新的universum,所有元素均为零。这个宇宙必须具有给定矩阵的nx m(行的n长度,列的m长度) 比如说 I have a matrix m given. I = len(m) #I is the amount of rows J = len(m[0]) #J is

我想在matlab中创建一个名为create_empty_universum的函数。此函数将创建一个新的universum,所有元素均为零。这个宇宙必须具有给定矩阵的nx m(行的n长度,列的m长度)

比如说

I have a matrix m given.

I = len(m)                                  #I is the amount of rows 
J = len(m[0])                               #J is the amount of columns
New_matrix =[]
row= I*[0]
index = 0

def create_empty_universum():
    while index < J :
        New_matrix.append(row)
        index +=1
    return New_matrix
我得到了一个矩阵m。
I=len(m)#I是行数
J=len(m[0])#J是列的数量
新矩阵=[]
行=I*[0]
索引=0
def create_empty_universum():
当指数

但是我的新矩阵仍然是[]这是怎么产生的?

您想在列表上使用乘法运算符:

>>> cols = 4
>>> rows = 3
>>> [0] * cols
[0, 0, 0, 0]
>>> [[0] * cols] * rows
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
如果确实要使用辅助函数,请执行以下操作:

def create_empty_universum(cols, rows, cell=0):
    return [[cell] * cols] * rows
更新:
请参阅@tobias_k的评论:您应该使用
[[0]*cols for i in range(rows)]
来拥有不相关的行。

您想在列表上使用乘法运算符:

>>> cols = 4
>>> rows = 3
>>> [0] * cols
[0, 0, 0, 0]
>>> [[0] * cols] * rows
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
如果确实要使用辅助函数,请执行以下操作:

def create_empty_universum(cols, rows, cell=0):
    return [[cell] * cols] * rows
更新:
请参阅@tobias_k的评论:您应该使用
[[0]*cols for i in range(rows)]
来拥有不相关的行。

您的
返回值
超出了您的功能范围。这只是我的问题,还是命名一个新变量非常令人不安?我修复了返回问题。但是我的新矩阵仍然[]
索引
不在
创建空的宇宙
的范围之内-你怎么称呼它?你甚至称它为?
New\u matrix
你的
return
不在你的功能范围之内是我自己,还是命名一个新的变量很令人不安?我解决了返回问题。但是我的新矩阵仍然[]
索引
不在
创建空的宇宙
的范围之内-你怎么称呼它?您甚至可以称之为?
New_matrix
警告:这样做,矩阵将包含三倍于相同列表的内容,例如,将
M[0][0]
设置为5也将
M[1][0]
和M[2][0]`设置为5。要避免这种情况,请在范围(行)中使用i的
[[0]*cols]
。(对于内部列表,
*
运算符可以使用。)警告:这样做,矩阵将包含相同列表的三倍,例如,将
M[0][0]
设置为5也将
M[1][0]
和M[2][0]`设置为5。要避免这种情况,请在范围(行)中使用i的
[[0]*cols]
。(对于内部列表,
*
运算符可以使用。)