在 Fluent Python 中,作者 Luciano Ramalho,第 8 章,Copies Are Shallow by Default,有一个例子:
>>> listOne = [3, [55, 44], (7, 8, 9)]
>>> listTwo = list(listOne)
>>> listTwo
[3, [55, 44], (7, 8, 9)]
>>> listTwo == listOne
True
>>> listTwo is listOne
False
作者建议我们应该使用 Online Python Tutor 运行此代码,以逐步了解发生了什么。
我使用 Online Python Tutor 执行了前两行,这是我得到的屏幕截图:
让我困惑的是:
每个列表中的所有三个元素,不可变整数,列表和元组实际上是相同的,例如
listOne[0] is listTwo[0] #True
listOne[1] is listTwo[1] #True
listOne[2] is listTwo[2] #True
那么为什么图表在各自列表的开头显示了两个单独的 3 呢?