Python - 如何创建N个变量

时间:2016-01-10 23:26:50

标签: python variables python-3.x matrix

我试图通过基本功能将X名称分配给N个变量。 我一直在寻找钥匙,但我总能找到相同的答案:

这是一个坏主意,为什么不用字典......

def create_matrix(m,nf,nc):
m = np.empty((nf,nc), dtype=np.int)
for i in range(nf):
    for j in range(nc):
        m[i][j] = int(input('Value: '))

我想建立N" matrices",我需要在每个之前声明m = np.empty((nf,nc),dtype = np.int),答案是,我怎么可能" dinamize"那个功能是为了以后跟他们一起运作? F.E:

create_matrix1(m1,2,3) create_matrix2(m2,2,3) 。 。 。 create_matrixn(MN,2,3) m1 + m2 + m5 = x

提前致谢

嗯,这很有效,谢谢!

>>> mats
[array([[1, 2],
       [3, 4]]), array([[5, 6],
       [7, 8]]), array([[ 9, 10],
       [11, 12]])]

现在我试图找出如何引用垫子[1(x,y)]以便与它们一起操作

>>> mats[1[[1][1]]]
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    mats[1[[1][1]]]
IndexError: list index out of range
>>> mats[1[1][1]]
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    mats[1[1][1]]
TypeError: 'int' object is not subscriptable

你是对的。

>>> mats[1][1][1]
8

我以为我尝试了每一个可能性,我觉得我很累,有时间睡觉。

非常感谢!

1 个答案:

答案 0 :(得分:3)

因为你不知道有多少矩阵,给它们起名字是行不通的,不是吗?它也很快变得笨拙,如果有43个矩阵你必须使用变量名称,如m1到m43,并在需要时输入这些名称,并且如果下次需要44,那么整个加载更多的输入,或者什么如果你只需要另外3次?事实上,它是Python(和其他编程语言)的一个特性,它可以存储对矩阵(也包括对象,函数......)之类的引用,因此您不必为矩阵命名。 ,只要你能够保持足够的参考。将参考文献存储在例如列表或字典。

然后,不是传入矩阵m,而是让函数返回对新矩阵的引用,并且调用代码将引用存储在列表中,如下所示:

def create_matrix(nf,nc):
    m = np.empty((nf,nc), dtype=np.int)
    for i in range(nf):
        for j in range(nc):
            m[i][j] = int(input('Value: '))
    return m

mats = []
# for this example let's create 43 matrices
for i in range(43):
    mats.append(create_matrix(100,13)
print mats

现在mats [0]是第一个,mats [1]是第二个,依此类推。

想到这一点的一种方法是,你想要创建一个动态矩阵m1,实际上存储在我的例子中的垫子[0]中,m2在垫子[1]中,m3在垫子[2]中。 (因为列表从0开始编制索引,第一项是在mats [0]中)

您也可以使用相同的功能以您想要的样式创建矩阵,例如:

m1 = create_matrix(100,13)
m2 = create_matrix(100,13)
m3 = create_matrix(100,13)
...

要参考这些矩阵,您可以使用例如m1(x,y)使用mats[1](x,y) - mats[1]会替换m1,如果您明白我的意思。或者您使用m1[x][y]的位置,请使用mats[1][x][y]