List extend() в индекс, вставляя элементы списка не только до конца
Я ищу самый pythonic способ реализовать версию функции списка extend
, где она распространяется на данный индекс, а не на конец списка.
a_list = [ "I", "rad", "list" ]
b_list = [ "am", "a" ]
a_list.my_extend( b_list, 1 ) # insert the items from b_list into a_list at index 1
print( a_list ) # would output: ['I', 'am', 'a', 'rad', 'list']
Есть ли способ сделать это, не создавая новый список, например?
a_list = [ "I", "rad", "list" ]
b_list = [ "am", "a" ]
c_list = []
c_list.extend( a_list[:1] )
c_list.extend( b_list )
c_list.extend( a_list[1:] )
print( c_list ) # outputs: ['I', 'am', 'a', 'rad', 'list']
Этот подход на самом деле не так уж плох, но мне кажется, что это может быть проще. Может ли это?
Ответы
Ответ 1
Конечно, вы можете использовать индексацию фрагментов:
a_list[1:1] = b_list
Чтобы продемонстрировать общий алгоритм, если вы должны реализовать функцию my_extend
в гипотетическом пользовательском классе list
, это будет выглядеть так:
def my_extend(self, other_list, index):
self[index:index] = other_list
Но на самом деле не делайте эту функцию, просто используйте нотацию среза, когда вам нужно.