【发布时间】:2022-11-30 05:23:18
【问题描述】:
我想了解 Python 中的链分配。
如果我运行x = x[1] = [1, 2],我会得到一个无限列表[1, [...]]。
但是如果我运行x = x[1:] = [1, 2],我会得到一个正常的列表[1, 1, 2]。
它是如何在后台工作以产生这两种不同的结果的?
【问题讨论】:
标签: python variable-assignment infinite-loop
我想了解 Python 中的链分配。
如果我运行x = x[1] = [1, 2],我会得到一个无限列表[1, [...]]。
但是如果我运行x = x[1:] = [1, 2],我会得到一个正常的列表[1, 1, 2]。
它是如何在后台工作以产生这两种不同的结果的?
【问题讨论】:
标签: python variable-assignment infinite-loop
x = x[1] = [1, 2]
在这种情况下,x 和x[1] 是同一个对象.因此 x 包含本身,在您的输出中由 ... 表示。
x = x[1:] = [1, 2]
在这种情况下,x 是一个片, 切片是副本.所以他们是不是同一个对象.
【讨论】: