You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历修改矩阵值?Python用坐标字典构建5×6矩阵输出异常求解

问题解决

错误原因

  • 你使用()包裹推导式,这在Python中属于生成器表达式,不会直接输出计算后的值,只有迭代时才会生成结果,因此直接打印会显示生成器对象。
  • 原列表推导逻辑不符合需求:你为每个矩阵位置都传入了遍历整个字典的生成器,没有实现坐标和矩阵位置的一一对应。

修正方案

你的字典ID刚好是按6行5列的顺序排列的,第y行(从0开始计数)第x列(从0开始计数)对应的ID为y * w + x + 1,直接取值即可,不需要额外套tuple()转换,字典的值本身就是元组类型。

DIC = {1: (0.0, 0.0), 6: (0.0, 0.14), 2: (0.14, 0.0), 7: (0.14, 0.14), 3: (0.28, 0.0), 8: (0.28, 0.14), 4: (0.42, 0.0), 9: (0.42, 0.14), 5: (0.56, 0.0), 10: (0.56, 0.14), 11: (0.0, 0.28), 12: (0.14, 0.28), 13: (0.28, 0.28), 14: (0.42, 0.28), 15: (0.56, 0.28), 16: (0.0, 0.42), 17: (0.14, 0.42), 18: (0.28, 0.42), 19: (0.42, 0.42), 20: (0.56, 0.42), 21: (0.0, 0.56), 22: (0.14, 0.56), 23: (0.28, 0.56), 24: (0.42, 0.56), 25: (0.56, 0.56), 26: (0.0, 0.7), 27: (0.14, 0.7), 28: (0.28, 0.7), 29: (0.42, 0.7), 30: (0.56, 0.71)}    
w, h = 5, 6
# 按行优先顺序对应ID取值
position = [[DIC[y * w + x + 1] for x in range(w)] for y in range(h)] 
print(position)

运行后即可得到填充了实际坐标值的5×6矩阵。

内容的提问来源于stack exchange,提问作者user17614953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:36:03