将新项目附加到列表中的列表

Var*_*lla 7 python list append

我正在尝试将新的float元素追加到另一个列表中的列表中,例如:

list = [[]]*2
list[1].append(2.5)
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

print list
[[2.5], [2.5]]
Run Code Online (Sandbox Code Playgroud)

当我想得到:

[[], [2.5]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

提前致谢.

Cat*_*lus 17

lst = [[] for _ in xrange(2)](或只是[[], []]).不要使用与可变对象的乘法 - 你得到相同的X倍,而不是X不同的.

  • 我建议不要使用`_`,因为它显然会弄乱一些交互式解释器.另外,不要把它叫做`list`,你要掩盖内置的.此外,对于不可变对象,您将获得相同的X次,除了您以后想要检查对象标识之外,它通常并不重要. (4认同)
  • @ag:`_`是标准的"我不关心这个变量"变量.交互模式使用它来存储最后的结果,但它肯定不会弄乱任何东西. (4认同)
  • @agf:那就是那个IDE的bug.至少对我来说,常见的代码风格更为重要. (3认同)

agf*_*agf 5

list_list = [[] for Null in range(2)]
Run Code Online (Sandbox Code Playgroud)

不要打电话list,这会阻止你调用内置函数list().

你的问题发生的原因是Python创建一个列表然后重复两次.因此,无论您通过要么访问其追加到它list_list[0]或者list_list[1],你这样做你的变化将出现在这两个指标同样的事情.