我只是尝试学习列表推导和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)
我认为我做得对,但我不知道。如果有人有想法,请帮助!
答案 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数组。