Python Lambda身份矩阵

时间:2013-08-15 08:03:13

标签: python python-3.x matrix lambda algebra

我只是尝试学习列表推导和Lambda函数。我想我理解这个概念,但是我已经被赋予了一个创建程序的任务,当以正整数形式输入时会创建单位矩阵。基本上如果我输入2它会给我:[[1,0],[0,1]]如果我给它3:[[1,0,0],[0,1,0],[0 ,0,1]所以在列表中列出。

现在我需要在lambda函数中创建所有这些。如果我输入:

FUNCTIONNAME(x)它将检索大小为x-by-x的单位矩阵。

顺便说一下x总是一个正整数。

这是我到目前为止所做的:

FUNCTIONNAME = lambda x: ##insertCodeHere## for i in range(1, x)

我认为我做得对,但我不知道。如果有人有想法,请帮助!

3 个答案:

答案 0 :(得分:6)

怎么样:

>>> imatrix = lambda n: [[1 if j == i else 0 for j in range(n)] for i in range(n)]
>>> imatrix(3)
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]

1 if j == i else 0是Python的conditional expression

的示例

答案 1 :(得分:4)

这是我最喜欢的方式:

identity = lambda x: [[int(i==j) for i in range(x)] for j in range(x)]

利用True映射到1而False映射到0的事实。

答案 2 :(得分:3)

只是为了完整性(并强调一个人应该如何在python中做数字化的东西):

import numpy
list_eye = lambda n: numpy.eye(n).tolist()

当然,在实践中,您可能只是单独使用eye(n)并使用numpy数组。