Как удалить диапазон (подраздел) списка в Python?

У меня есть простой список всегда упорядоченных по порядку:

all = [ 1, 2, 3, 4, 5, 6 ] # same as range( 1, 7 ) 

У меня также есть current = 4 . В конце концов, я хочу, чтобы all список выглядел так

 altered = [ 1, 2, 5, 6 ] 

Так что случилось, так это то, что он удалил current номер и тот, который был перед ним 3 .

current также может быть 1 и 0 , поэтому я хочу убедиться, что он не выдает ошибку для этих двух значений.

Для исключения current = 0 измененный список выглядит следующим образом:

 altered = [ 1, 2, 3, 4, 5 ] 

Это означает, что current = 0 просто удаляет последнее число.

Я чувствую, что вы, вероятно, можете что-то придумать с генераторами, но я сосать их писать.

Заранее спасибо!

Бонусные баллы за это в одной строке. Если current = 0 слишком много проблем, тогда он также может быть current = -1 или current = 7 .

РЕДАКТИРОВАТЬ: Обязательно проверяйте current = 1 , который должен быть

 altered = [ 2, 3, 4, 5, 6 ] 

4 Solutions collect form web for “Как удалить диапазон (подраздел) списка в Python?”

 all = all[:max(current - 2, 0)] + all[current:] 

или

 del all[max(current - 2, 0):current] 

Будет ли это работать?

 >>> all = range(1, 7) >>> new = all[:2]+all[4:] >>> print new [1, 2, 5, 6] 
 all[:max(current-2,0)] + all[max(current,0):][:-1] + all[-1:]*(0 < current < len(all)) 
 >>> all = range(1,7) >>> current = 4 >>> [item for item in all if item != current and item != current-1] [1, 2, 5, 6] >>> current = 0 >>> [item for item in all if item != current and item != current-1] [1, 2, 3, 4, 5, 6] 
  • Python: определение списка определенного типа объекта
  • Python: как добавить новые элементы в список списка?
  • Объединение двух LIsts уникальным способом в Python
  • Список чередования с фиксированным элементом
  • Итеративный поиск / замена из списка кортежей в Python
  • Запись и чтение списков в текстовые файлы в Python: есть ли более эффективный способ?
  • различный размер элемента в массиве numpy и список
  • Фильтрация списков: понимание списка по сравнению с lambda + filter
  • Python - лучший язык программирования в мире.