相关疑难解决方法(0)

与列表切片相反,元组切片不返回新对象

在Python(2和3)中。每当我们使用列表切片时,它都会返回一个新对象,例如:

l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
Run Code Online (Sandbox Code Playgroud)

输出量

>>> 140344378384464
>>> 140344378387272
Run Code Online (Sandbox Code Playgroud)

如果使用元组重复相同的事情,则返回相同的对象,例如:

t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
Run Code Online (Sandbox Code Playgroud)

输出量

>>> 140344379214896
>>> 140344379214896
Run Code Online (Sandbox Code Playgroud)

如果有人能弄清为什么会发生,那将是很棒的,在我的整个Python经验中,我一直以为空切片会返回一个新对象的印象。

我的理解是,它返回的对象与元组是不可变的相同,因此没有必要为其创建新副本。但是同样,文档中也没有提到它。

python tuples cpython list slice

12
推荐指数
1
解决办法
448
查看次数

标签 统计

cpython ×1

list ×1

python ×1

slice ×1

tuples ×1