Одновременно вставлять и расширять список?

Есть ли лучший способ одновременного вставки и расширения списка? Вот уродливый пример того, как я это делаю сейчас. (скажем, я хочу вставить «2.4» и «2.6» после элемента «2»):

>>> a = ['1', '2', '3', '4'] >>> b = a[:a.index('2')+1] + ['2.4', '2.6'] + a[a.index('2'):] >>> b <<< ['1', '2', '2.4', '2.6', '3', '4'] 

4 Solutions collect form web for “Одновременно вставлять и расширять список?”

 >>> a = ['1', '2', '3', '4'] >>> a ['1', '2', '3', '4'] >>> i = a.index('2') + 1 # after the item '2' >>> a[i:i] = ['2.4', '2.6'] >>> a ['1', '2', '2.4', '2.6', '3', '4'] >>> 

Вы можете легко вставить один элемент, используя list.insert(i, x) , который Python определяет как s[i:i] = [x] .

 a = ['1', '2', '3', '4'] for elem in reversed(['2.4', '2.6']): a.insert(a.index('2')+1, elem)) 

Если вы хотите вставить список, вы можете создать свою собственную функцию, которая опускает []:

 def iextend(lst, i, x): lst[i:i] = x a = ['1', '2', '3', '4'] iextend(a, a.index('2')+1, ['2.4', '2.6'] # a = ['1', '2', '2.4', '2.6', '3', '4'] 

Я не совсем понимаю, что вы делаете; если вы хотите добавить значения, и список остался в порядке, он чище (и, вероятно, еще быстрее) просто сортировать все:

 a.extend(['2.4', '2.6']) a.sort() 

Посмотрите на модуль bisect . Я думаю, он делает то, что вы хотите.

  • Питоновский способ получить один элемент 1-го списка
  • Использование двух библиотек Python с конфликтующими именами
  • Создание пустоты в Python для этих спецификаций?
  • В каком порядке python отображает словарные ключи?
  • В Python, зачем нам нужны readlines (), когда мы можем перебирать сам дескриптор файла?
  • Какие веб-серверы приложений для Python
  • Идентификатор объекта в Python
  • Файлы загрузки API для Google Диска - python - файлы не загружены
  • Python - лучший язык программирования в мире.