【问题标题】:Python Lambda Identity MatrixPython Lambda 身份矩阵
【发布时间】:2013-08-17 09:33:07
【问题描述】:

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

现在我需要在 lambda 函数中创建这一切。所以如果我输入:

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

顺便说一句,x 永远是一个正整数。

这是我目前所拥有的:

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

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

【问题讨论】:

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


    【解决方案1】:

    怎么样:

    >>> 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 的一个示例。

    【讨论】:

    • 谢谢你的详细解释!
    【解决方案2】:

    这是我最喜欢的方式:

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

    它利用了 True 映射到 1 和 False 映射到 0 的事实。

    【讨论】:

      【解决方案3】:

      只是为了完整性(并强调一个人真正应该如何在 python 中做数值工作):

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

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

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 2018-12-22
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多