当前位置: 首页 > 面试题库 >

尝试修改单个值时,二维列表具有怪异的行为

钮博裕
2023-03-14
问题内容

因此,我对Python还是比较陌生,在使用2D列表时遇到了麻烦。

这是我的代码:

data = [[None]*5]*5
data[0][0] = 'Cell A1'
print data

这是输出(为便于阅读而设置的格式):

[['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None]]

为什么为每一行分配值?


问题答案:

这将形成一个列表,其中包含对 同一 列表的五个引用:

data = [[None]*5]*5

使用类似这样的东西,它将创建五个单独的列表:

>>> data = [[None]*5 for _ in range(5)]

现在,它可以满足您的期望:

>>> data[0][0] = 'Cell A1'
>>> print data
[['Cell A1', None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None]]


 类似资料:
  • 问题内容: 我有一个需要修改数据库表中列默认值的要求。该表已经是数据库中的现有表,并且当前该列的默认值为NULL。现在,如果将新的默认值添加到此列,如果我是正确的话,它将列的所有现有NULL更新为新的DEfault值。有没有一种方法可以不执行此操作,但仍在列上设置新的默认值。我的意思是我不想更新现有的NULL,并希望它们保留为NULL。 在这方面的任何帮助,不胜感激。谢谢 问题答案: 您对将会发生

  • 下面是我生成PDF的代码: 下面是我用来绘制多个字符串的代码: 此代码正常工作,但如果我将更改为,它将引发以下异常: 起初,我认为这是因为有些数据不存在,无法编写,但如果我不更新Voly,它就可以正常工作。然后我认为这是一个问题,当创建了一个新页面但流存在时,没有创建PDPageContentStream。 提前感谢您的帮助!

  • 问题内容: 例如: 上面的代码不执行任何操作,因为条件不是通过引用获得的。正确的方法是什么? 问题答案: 您可以使用: 但是,总的来说,这些东西在使用辅助函数和列表理解时会更加干净: 应该注意的是,第二种解决方案不会适当地更新列表-换句话说,如果您对此列表有其他引用,则它们不会受到影响。如果需要,可以使用切片分配很容易地进行替换:

  • 问题内容: 对于我的程序,我想从属性文件中读取一个键,并从该键关联的值列表中读取。 最近我在尝试那样 我的属性文件如下所示- 我想要键A应该有一个包含contains 和B包含的列表。 因此Map应该是这样,但是我 在网上搜索了这种方法,但一无所获。我希望有办法。有什么帮助吗? 问题答案: 尝试将属性编写为以逗号分隔的列表,然后在加载属性文件后拆分值。例如 如果您在值中使用逗号,则还可以使用org

  • 关于上一个问题: 删除2D矩阵中的全零行 输出: 好的,到目前为止还不错,但是如果我添加空列呢? 输出为 这不是我想要的。 基本上如果我的矩阵是: 我期待的输出是

  • 问题内容: 我知道您不应在遍历列表时添加/删除项目。但是,如果不更改列表长度,是否可以修改要迭代的列表中的项目? 还是应该迭代列表索引?像那样: 问题是:以上两种方式都是允许的,还是只有第二种是没有错误的? 如果答案是肯定的,以下代码段是否有效? UPD。我想在python文档中看到“允许这些操作”而不是某人的假设。 问题答案: 可以这么说,您 不是在 修改列表。您只是在修改列表中的元素。我不认为