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