list .__ delslice__ python 3

use*_*209 2 python list python-2.x python-3.x

是否有一个列表的方法来执行python 2的list.__delslice__功能?有一个,__delitem__但它似乎只删除一个项目而不是从x到y,所以这里是我想要做的一个例子

somelist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
somelist.__delslice__(4, len(somelist))
print(somelist)
# output: [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

看起来他们可能已经从python 3中删除了它,是吗?如果没有它现在叫什么或有一个模块有它?

fal*_*tru 5

根据Python 2.7 - object.__delslice__文档:

被称为实现删除self [i:j].对于i和j,与__getslice __()相同.不推荐使用此方法.如果没有找到__delslice __(),或者对于形式self [i:j:k]的扩展切片,则创建切片对象,并传递给__delitem __(),而不是调用__delslice __().

所以,调用__delitem__with slice对象:

>>> somelist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> somelist.__delitem__(slice(4, len(somelist)))
>>> somelist
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你可以用来None代替len(somelist):

>>> somelist.__delitem__(slice(2, None))
>>> somelist
[1, 2]
Run Code Online (Sandbox Code Playgroud)

UPDATE

您可以使用del带有切片的语句:

del somelist[2:]
Run Code Online (Sandbox Code Playgroud)

  • 我在那里使用`None`,但是是的. (2认同)