python - 矩阵操作 - 为什么正常循环会产生不同的结果?
问题描述
我的问题与这个问题有关。我试图 在他/她对常规老式循环的问题的回答中对@shuttle87提供的列表理解进行建模。这是我的代码片段的样子:
matrix = [[2,0,2],[0,2,0],[2,0,2]]
sqd = []
for i in matrix:
for e in i:
sqd.append(e*e)
print(sqd)
我的问题是我的代码返回一个列表,[4, 0, 4, 0, 4, 0, 4, 0, 4]
而不是矩阵,即[[4, 0, 4], [0, 4, 0], [4, 0, 4]]
。我可能做错了什么?
免责声明:我知道有很棒的 python 库可以做到这一点,例如 numpy。我喜欢通过直觉理解事物,因此这个问题......所以请原谅我的天真。
解决方案
您有一个sqd
要附加标量值的列表,因此它始终只是一个一维列表。如果您想要一个列表列表(即二维矩阵),您需要将列表附加到sqd
,而不是标量值:
matrix = [[2,0,2],[0,2,0],[2,0,2]]
sqd = []
for i in matrix:
row = [] # create a new list for each row
for e in i:
row.append(e*e) # append scalar to the row list
sqd.append(row) # append row to matrix list
print(sqd)
推荐阅读
- javascript - 如何从 vue js 中的另一个组件获取布尔数据?
- c# - 嵌套的一对多表 SQLite-Net Extensions
- sql - SQL 三表连接使用两个 id 和另一列
- python - 在熊猫中导入嵌套字典数据
- flutter - 颤振错误:没有名为“keyboardDismissBehavior”的命名参数
- flutter - 当我通过单击脚手架内的平面按钮导航到其他页面时,底部导航栏消失
- sql - 如何获得条件序列
- javascript - 从另一个文件组织和设置状态
- python - 使用python将变量与自身进行比较
- snakemake - 如何解决snakemake 5.32.0 env 问题