Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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 对范围进行切片是否会像对列表进行切片一样使用额外的空间?_Python_Memory_Range_Slice_Space - Fatal编程技术网

Python 对范围进行切片是否会像对列表进行切片一样使用额外的空间?

Python 对范围进行切片是否会像对列表进行切片一样使用额外的空间?,python,memory,range,slice,space,Python,Memory,Range,Slice,Space,如果我在Python终端中像下面这样分割一个范围,我将返回相同范围的另一个表示。与列表一样,对范围进行切片是否会分配额外的空间 >>> range(1,5)[::-1] range(4, 0, -1) 换句话说,这是否创建了一个新的范围 与常规列表或元组相比,范围类型的优势在于,范围对象始终会占用相同(较小)的内存量,而不管它所表示的范围大小(因为它只存储开始、停止和步长值,根据需要计算单个项和子范围) 参考: 不会从第一个范围复制(因此,如果对范围(1,5)和范围(1,

如果我在Python终端中像下面这样分割一个范围,我将返回相同范围的另一个表示。与列表一样,对范围进行切片是否会分配额外的空间

>>> range(1,5)[::-1]
range(4, 0, -1)
换句话说,这是否创建了一个新的范围

与常规列表或元组相比,范围类型的优势在于,范围对象始终会占用相同(较小)的内存量,而不管它所表示的范围大小(因为它只存储开始、停止和步长值,根据需要计算单个项和子范围)

  • 参考:
不会从第一个范围复制(因此,如果对
范围(1,5)
范围(1,5)[::-1]
应用一次,则空间复杂度相同),但会得到一个新的范围对象

range1 = range(1,5)
range2 = range1
range3 = range1[::-1]

print(id(range1))
print(id(range2))
print(id(range3))
与常规列表或元组相比,范围类型的优势在于,范围对象始终会占用相同(较小)的内存量,而不管它所表示的范围大小(因为它只存储开始、停止和步长值,根据需要计算单个项和子范围)

  • 参考:
不会从第一个范围复制(因此,如果对
范围(1,5)
范围(1,5)[::-1]
应用一次,则空间复杂度相同),但会得到一个新的范围对象

range1 = range(1,5)
range2 = range1
range3 = range1[::-1]

print(id(range1))
print(id(range2))
print(id(range3))
有帮助吗?有帮助吗?
range1 = range(1,5)
range2 = range1
range3 = range1[::-1]

print(id(range1))
print(id(range2))
print(id(range3))
140671877466800
140671877466800
140671877466608