Python 中二维矩阵的单元格分配,无需 numpy

2024-01-31

下面是我的脚本,它基本上创建了一个 12x8 的零矩阵,其中填充了 0。然后我想将其一一填充。假设第 2 列第 0 行需要为 5。我该怎么做?下面的示例显示了我是如何做到的以及错误的(根据我的需要)输出:

list_MatrixRow = []
list_Matrix = [] #Not to be confused by what the book calls, optimal alignment score matrix

int_NumbOfColumns = 12
int_NumbOfRows = 8

for i in range (0, int_NumbOfColumns): # Puts Zeros across the first Row
    list_AlignMatrixRow.append(0)
for i in range (0, int_NumbOfRows):
    list_AlignMatrix.append(list_AlignMatrixRow) 
#add the list in another list to make matrix of Zeros
#-------------------THE ACTUAL PROBLEMATIC PART; ABOVE IS FINE(It Works)------------

list_AlignMatrix[2][0] = 5 
# This is what logically makes sense but here is the output 
# which happens but I don't want (there should be all 0s and 
# only one 5 on the cell [2][0]):

[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

每行都指向同一个子列表。这是重复附加相同子列表的结果。因此,当您修改一行时,您最终也会修改其他行。

我会这样做:

ncols = 12
nrows = 8
matrix = [[0] * ncols for i in range(nrows)]
matrix[2][0] = 5 

matrix包含:

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

关于编码风格的旁白:在 Python 中,在名称中包含对象的类型是一种糟糕的形式。我选择重命名int_NumbOfColumns as ncols。如果您需要更具描述性的内容,请使用类似column_count。一般来说,应避免混合大小写名称,而类名通常使用驼峰命名法。看PEP 8——Python 代码风格指南 http://www.python.org/dev/peps/pep-0008/了解更多。

Edit:既然你提到你是Python新手,这里有更多的解释。

这是一个列表理解 http://docs.python.org/tutorial/datastructures.html#list-comprehensions:

matrix = [[0] * ncols for i in range(nrows)]

它也可以写成一个常规的 for 循环:

matrix = []
for i in range(nrows):
    matrix.append([0] * ncols)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中二维矩阵的单元格分配,无需 numpy 的相关文章

随机推荐

  • 如何通过 pkg-config 使用 C++ Boost 库?

    我成功编译并安装了最新版本的 Boost 库到我的 Linux 机器上 现在 我希望能够使用 pkg config 来简化提供 GCC 链接参数的过程 由于我懒得手动编码自己的 pc 文件 是否有一个脚本 工具可以自动生成所需的 pc 文件
  • 有什么方法可以使用 exe 文件执行我的 Node js 和 puppeteer 程序吗?

    当我在 CMD 上使用该程序时 该程序在 puppeteer 上运行良好 尽管如此 这是一个漫长的过程 对于任何非技术人员来说也很复杂 我想制作一个 exe 文件来执行我手动执行的任务 以在 CMD 中运行此 node js 文件 正如您首
  • Azure Active Directory 注销或清除本机应用程序的令牌缓存

    我有一个 C Web API REST 服务后端 我为 CMS 网页和 Angular2 应用程序提供服务 这是相关的 Angular 应用程序需要通过后端发送用户名和密码 原始凭据 进行身份验证 后端使用这些向 Azure Active
  • 尽管时间戳是正确的,但 date() 返回错误的日期!

    我的 php 日期函数有一个奇怪的问题 code numDays 8 date strtotime 2010 11 06 for i 1 i lt numDays i thisDay date D d M Y date print this
  • Java HTML 渲染“pt”与“px”大小

    我遇到了在 JLabel 中指定 html 元素宽度的问题 我想我应该在此处的旗杆上运行它 看看是否有人有任何建议 当我使用 px 单位值指定元素的宽度时 结果大小实际上约为 133 而如果我不使用单位或使用 pt 我会得到我指定的确切大小
  • 如何在 Django 中创建对话收件箱

    我有一个Message类有fromUser toUser text and createdAt fields 我想模仿 Whatsapp 或 iMessage 或任何 SMS 收件箱 这意味着我想获取每个对话的最后一条消息 I tried
  • 查找并发、重叠、日期范围的数量

    我有一个多年来一直试图解决的难题 但它完全超出了我的能力范围 我有一个包含 3 列的电子表格 A 列是讲师 ID 号 B 列是他们的课程开始日期 C 列是他们的课程结束日期 每个讲师 ID 都有多个课程 我基本上是想回答这个问题 这位讲师在
  • 独立于平台的资源系统(如 Qt Resource 系统)

    是否有一个类似于 Qt 附带的 C 平台独立资源系统 但没有 Qt 依赖项 我想从我的 C 源代码中访问任意数据 也就是说 不仅是图标 还包括翻译或着色器等 或者某种虚拟文件系统库来访问 例如ZIP 压缩文件或类似文件也能满足我的需要 我为
  • 检查视口中的可见性(puppeteer)

    如何使用 Puppeteer 检查 HTML 元素在视口 可见区域 内是否可见 例如 如果我必须滚动才能看到一个按钮 那么它就不可见 page waitForSelector element visible true page waitFo
  • 正则表达式前瞻、后瞻和原子组

    我在我的正则表达式体内发现了这些东西 但我不知道我可以用它们做什么 有人有例子 以便我可以尝试理解它们是如何工作的吗 positive lookahead negative lookahead lt positive lookbehind
  • 使用 Python Rich 在布局内获取提示

    是否可以使用提示获取用户输入within使用 Python Rich 的布局元素 我的目标是使用 Rich 的 Layout 构建一个具有 4 个窗格的全屏窗口 顶部 3 个包含标题 成分和方法 效果很好 但我希望底部一个包含用户输入的提示
  • Xamarin.Forms 中的透明页面

    我需要能够为 Android 创建透明的 Xamarin Forms 页面 我怎样才能做到这一点真正的页面渲染器 现在它有默认的背景颜色 assembly ExportRenderer typeof MyPage typeof ClearB
  • 如何在 Web 应用程序中使用 java.util.logger?

    我正在尝试在网络应用程序中使用记录器 我添加了 FileHandler 将日志写入文件 现在 我需要在项目中的其他类 servlet 中使用相同的处理程序 以便将所有类的日志写入同一文本文件 我怎样才能实现这个目标 Initialize a
  • VBA 动态范围

    我想知道是否有人可以帮助我 我将下面的代码放在一起 在我的工作簿中创建一个新工作表并应用动态命名范围和页面格式 Sub AllDataNamedRanges Dim rLOB As Range Dim rStaffName As Range
  • keras:如何保存历史对象的训练历史属性

    在 Keras 中 我们可以返回以下输出model fit历史记录如下 history model fit X train y train batch size batch size nb epoch nb epoch validation
  • C++20 前后 std::atomic 的初始化

    考虑以下两行代码 std atomic flag a Since C 20 std atomic flag a ATOMIC FLAG INIT Until C 20 在C 20中 第一行初始化a到清晰的状态 但如果我在 C 17 中使用它
  • 已弃用 - Laravel:如何使用 Carbon 在视图中本地化日期[重复]

    这个问题在这里已经有答案了 我正在尝试本地化Carbon不同语言的视图中的日期到目前为止还没有成功 我从模型中检索日期并将其发送到视图 Route get tables setup function now Date now Europe
  • Phonegap 3.0 自定义插件

    几个月前 我用phonegap 2 7为一个应用程序编写了一个插件 它运行得很好 该插件基本上打开用户电话簿并将用户选择的联系人的详细信息返回到我的应用程序 我最近升级到 Phonegap 3 0 我正在尝试将我的插件转换为 3 0 但是我
  • 如何将 NSData 值转换为 UIImage [重复]

    这个问题在这里已经有答案了 可能的重复 NSData 到 UIImage https stackoverflow com questions 2240765 nsdata to uiimage 如何将 NSData 值转换为 UIImage
  • Python 中二维矩阵的单元格分配,无需 numpy

    下面是我的脚本 它基本上创建了一个 12x8 的零矩阵 其中填充了 0 然后我想将其一一填充 假设第 2 列第 0 行需要为 5 我该怎么做 下面的示例显示了我是如何做到的以及错误的 根据我的需要 输出 list MatrixRow lis