Sotnikov Asked:2020-03-20 03:41:16 +0000 UTC2020-03-20 03:41:16 +0000 UTC 2020-03-20 03:41:16 +0000 UTC 为什么将列表附加到自身会创建一个无限嵌套的列表? 772 下午好!如果在参数中输入了调用此函数的列表,我想了解为什么 append 函数会创建一个无限嵌套的列表。 l=[1,2,3] l.append(l) python 1 个回答 Voted Best Answer MaxU - stop genocide of UA 2020-03-20T03:53:03Z2020-03-20T03:53:03Z 这个问题的答案在英文版的 SO... In [10]: l=[1,2,3] ...: l.append(l) 在对列表的l.append(l)引用 ( reference)之后l将被添加到列表的末尾,从而产生递归: In [11]: l is l[3] Out[11]: True In [12]: id(l) == id(l[3]) Out[12]: True 如何正确地做: In [14]: l.append(l[:]) In [15]: l Out[15]: [1, 2, 3, [1, 2, 3]] 如果你想要一个平面(非嵌套)列表: In [17]: l.extend(l) In [18]: l Out[18]: [1, 2, 3, 1, 2, 3] l[:]- 在内存中创建列表的副本: In [19]: l=[1,2,3] In [20]: l[:] is l Out[20]: False In [21]: id(l[:]) Out[21]: 179393864 In [22]: id(l) Out[22]: 197356744
这个问题的答案在英文版的 SO...
在对列表的
l.append(l)引用 (reference)之后l将被添加到列表的末尾,从而产生递归:如何正确地做:
如果你想要一个平面(非嵌套)列表:
l[:]- 在内存中创建列表的副本: