python - 我如何设计一个 Python 函数来打印仅将前向对角线元素设置为 True 的矩阵?

标签 python arrays multidimensional-array

<分区>

我正在尝试打印一个 n*n 矩阵,其中只有前向对角线元素设置为 True,其余元素设置为 False。

这是我的代码:

def func(n):
    dp = [[False]*n]*n
    for i in range(n):
        dp[i][i] = True
    print(dp)

我很困惑为什么 True 值在整个矩阵中传播,而不是继续局限于 i=j 的单元格。

n=5 的期望输出:

True False False False False
False True False False False
False False True False False
False False False True False
False False False False True

n=5 的当前输出:

True True True True True
True True True True True
True True True True True
True True True True True
True True True True True

这可能是什么问题?

最佳答案

原因是与 * 相乘不会创建新对象,如@TobyPetty 所述。

修复的方法是:

def func(n):
    dp = [[[False] for i in range(n)] for x in range(n)]
    for i in range(n):
        dp[i][i] = True
    print(dp)

关于python - 我如何设计一个 Python 函数来打印仅将前向对角线元素设置为 True 的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68869517/

相关文章:

python - 适合实时设置的 Redis 管道?

javascript - jQuery:按类选择元素返回 jQuery.fn.init(9) - 无法读取 .val()

c - K&R 1.19 练习 ("reverse"函数)

c# - 二维数组的所有可能组合

javascript - 在javascript中创建多维关联数组

python - 将列表作为索引传递以在 n 维嵌套列表中赋值

python - Google App Engine (Python) - 邮件已发送但未收到

python - pandas dataframe - 根据列标题更改值

python - Keras开关功能错误

c++ - 将元素添加到二维数组 C++