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

在Python中附加到2D列表

闻人和泽
2023-03-14
问题内容

我遇到了我认为在Python中很奇怪的行为,并且我希望有人能解释一下。

我创建了一个空的2D列表

listy = [[]]*3

print listy

[[], [], []]

我可以预期以下工作:

listy[1] = [1,2] 产量 [[], [1,2], []]

listy[1].append(3) 产量 [[], [1,2,3], []]

但是,当我追加到一个空列表之一时,python追加到所有子列表中,如下所示:

listy[2].append(1)产量[[1], [1,2,3], [1]]

谁能向我解释为什么会发生这种现象?


问题答案:

您尚未创建三个 不同的 空列表。您已经创建了 一个 空的列表,然后创建了三个引用到一个新的列表 相同的 空单。要解决此问题,请改用以下代码:

listy = [[] for i in range(3)]

现在运行示例代码可以得到您可能期望的结果:

>>> listy = [[] for i in range(3)]
>>> listy[1] = [1,2]
>>> listy
[[], [1, 2], []]
>>> listy[1].append(3)
>>> listy
[[], [1, 2, 3], []]
>>> listy[2].append(1)
>>> listy
[[], [1, 2, 3], [1]]


 类似资料:
  • 问题内容: 有没有更优雅的方式来编写此代码? 我在做什么:我有键和日期。可能有多个日期分配给键,因此我正在创建一个包含日期列表的字典来表示这一点。以下代码可以正常工作,但是我希望有一个更优雅和Pythonic的方法。 我期望下面的工作,但我不断得到一个NoneType没有属性附加错误。 这可能与以下事实有关: 但为什么? 问题答案: 返回,因为它是就地操作,并且您将其分配回。因此,下一次您实际要做

  • 问题内容: 我有一个整数和一个列表。我想创建一个新的列表,它们以变量开头,以列表结尾。写我得到错误。编译器将其作为整数处理,因此我不能使用append或extend。你会怎么做? 问题答案: var=7 >>>array = [1,2,3,4,5,6] >>>array.insert(0,var) >>>array [7, 1, 2, 3, 4, 5, 6] 这个怎么运作: 在给定位置插入项目。第

  • 问题内容: 我试图弄清楚如何在Python中将多个值附加到列表中。我知道很少有方法可以做到这一点,例如手动输入值或将附加操作放入循环中,或和函数。 但是,我想知道是否还有更整齐的方法?也许某个程序包或功能? 问题答案: 您可以使用sequence方法将列表从任意迭代类型中扩展为多个值,无论是另一个列表还是提供值序列的任何其他事物。 因此,您可以用来附加 单个 值,也可以附加 多个 值。

  • 问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况相关,通常不适用于Internet的全球受众。要获得使该问题更广泛适用的帮助,请访问帮助中心。 8年前关闭。 PHP有一种非常快速的方法将值附加到数组: 在python中不需要索引号的最简单方法是什么?另外,有没有一种简单的方法可以使用嵌套在字典中的列表来执行此操作,例如此PHP等效项。 问题答案:

  • 问题内容: 如何附加到文件而不是覆盖文件?有附加到文件的特殊功能吗? 问题答案:

  • 问题内容: 问题 我正在以以下方式创建一个空列表作为值的字典。 字典看起来像这样。 当我将一个值附加到一个列表时,此示例将值附加到所有列表。 问题 我的问题分为两部分。首先,为什么会这样?第二,我该怎么办?也就是说,如何将一个值仅附加到一个列表中? 我想象在创建字典时,我使所有列表都指向同一个对象。但是我不明白怎么回事,因为当我输入而不是在字典创建中,然后添加值而不是附加值时,这些值的行为会不同,