python - 试图构建单位矩阵?

标签 python arrays algorithm list matrix

<分区>

写一个函数 identity(n) 返回第 n 个身份 矩阵。
例如:identity(3) 输出 [[1,0,0][0,1,0][0,0,1]]
我试过如下:

def identity(n):
matrix=[[0]*n]*n
i=0
while i<n:
    matrix[i][i]=1
    i+=1
return matrix

我也尝试过 range 但它没有像这样工作

def identity(n):
    matrix=[[0]*n]*n
    k=matrix[:]
    i=0
    for i in range(1,n):
        matrix[i][i]=1
        i+=1
    return k
print(identity(5))

但它输出 n = 5:

[[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]

最佳答案

如果不允许使用 numpy ... 知道这个 How to define two-dimensional array in python

然后这样做

def identity(n):
    m=[[0 for x in range(n)] for y in range(n)]
    for i in range(0,n):
        m[i][i] = 1
    return m

关于python - 试图构建单位矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269725/

相关文章:

algorithm - 如何优化 n 个字符串的连接成本

python - 在子类化 collections.MutableSequence 时如何实现 __delitem__?

python - 如何在 Google App Engine for Python 上设置 ETAGS?

arrays - 使用 ArrayList 将文本文件拆分并存储到数组中

C 从文件中读取数字到数组中

java - 假设整数是从数据流中读取的。以有效的方式找到读取的元素的中位数

PHP 在连字符数组中查找缺失的数字

python - 如何在 sunOS 启动时运行我的 python 脚本

python - Twitter API 返回 401(未经授权),处理您的请求时发生错误

c# - 查看锯齿状数组中的每个组合