2014-03-09 3 views
2

Есть ли способ для списка, который делает то, что делает python 2 list.__delslice__? Существует __delitem__, но, кажется, он удаляет только один элемент, а не от х к у, так вот пример того, что я хочу сделатьСписок .__ delslice__ python 3

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

Кажется, что они, возможно, удалили это из питона 3, они? Если не то, что сейчас называется, или есть модуль, который имеет его?

ответ

5

По Python 2.7 - object.__delslice__ documentation:

Вызывается осуществить удаление самости [я: J]. Такие же заметки для i и j как для __getslice __(). Этот метод устарел. Если не найден __delslice __() или для расширенного среза формы self [i: j: k], создается объект среза и передается __delitem __() вместо имени __delslice __() .

Итак, вызовите __delitem__ с slice объект:

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

Кстати, вы можете использовать None вместо len(somelist):

>>> somelist.__delitem__(slice(2, None)) 
>>> somelist 
[1, 2] 

UPDATE

Вы можете использовать del заявление с ломтиком:

del somelist[2:] 
+2

Я хотел бы использовать 'None', но да. –

+0

@ IgnacioVazquez-Abrams, Спасибо за совет. Я добавил это. – falsetru

+1

вместо использования 'somelist .__ delitem __ (slice (4, len (somelist)))' должен использовать 'del somelist [4: len (somelist)]' или лучше 'del somelist [4:]' –

Смежные вопросы