Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中切片返回的列表的Id_Python - Fatal编程技术网

Python中切片返回的列表的Id

Python中切片返回的列表的Id,python,Python,我读到列表切片返回一个包含原始列表内容的新列表。 在运行下面的代码时,为什么我看到切片返回的所有列表都有相同的id。有人能解释一下这里发生了什么吗 list_4 = [0, 1, 2, 3, 4, 5] print(id(list_4)) print(id(list_4[0:1])) print(id(list_4[0:2])) print(id(list_4[-1:])) 输出: 2812068811464 2812100759880 2812100759880 2812100759880

我读到列表切片返回一个包含原始列表内容的新列表。 在运行下面的代码时,为什么我看到切片返回的所有列表都有相同的id。有人能解释一下这里发生了什么吗

list_4 = [0, 1, 2, 3, 4, 5]
print(id(list_4))
print(id(list_4[0:1]))
print(id(list_4[0:2]))
print(id(list_4[-1:]))
输出:

2812068811464
2812100759880
2812100759880
2812100759880

您的切片在下一条语句之前被删除,因此新切片具有相同的
id
。如果保留切片,则
id
永远不会相同:

>>> print(id(list_4[0:1]))
139887348117232
>>> print(id(list_4[0:2]))
139887348117232
>>> print(id(list_4[-1:]))
139887348117232
>>> b = list_4[0:1]
>>> c = list_4[0:2]
>>> id(b)
139887348117232
>>> id(c)
139887348207200
>>> 

因为
id
只保证对象生命周期内的唯一数字。在这里的每种情况下,新列表都会立即被回收(CPython实现细节),私有堆可以自由地重新使用该内存来分配新列表(同样,CPython实现细节)