为什么附加列表本身会创建一个无限列表

q.T*_*hen 4 python recursion list

l = [1, 2]
l.append(l)
>>>l
[1, 2, [...]] #l is an infinite list
Run Code Online (Sandbox Code Playgroud)

为什么这会创建无限列表而不是创建:

l = [1, 2]
l.append(l)
>>>l
[1, 2, [1, 2]]
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 8

当你这样做时:

l.append(l)
Run Code Online (Sandbox Code Playgroud)

列表的引用l附加到列表l:

>>> l = [1, 2]
>>> l.append(l)
>>> l is l[2]
True
>>>
Run Code Online (Sandbox Code Playgroud)

换句话说,您将列表放在其中.这创建了一个无限的参考周期,用以表示[...].


要做你想做的事,你需要附上一份清单l:

>>> l = [1, 2]
>>> l.append(l[:])  # Could also do 'l.append(list(l))' or 'l.append(l.copy())'
>>> l
[1, 2, [1, 2]]
>>> l is l[2]
False
>>>
Run Code Online (Sandbox Code Playgroud)