list extens () para indexar, insertando elementos de list no solo hasta el final

Estoy buscando la forma más pirónica de implementar una versión de la función de extend lista, donde se extiende a un índice dado en lugar del final de la lista.

 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'] 

¿Hay una manera de hacer esto sin construir una nueva lista, como esta?

 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'] 

Ese enfoque no es realmente tan malo, pero tengo el presentimiento de que podría ser más fácil. ¿Podría?

Claro, puedes usar la indexación de segmentos:

 a_list[1:1] = b_list 

Solo para demostrar el algoritmo general, si implementara la función my_extend en una clase de list personalizada hipotética, se vería así:

 def my_extend(self, other_list, index): self[index:index] = other_list 

Pero en realidad no lo convierta en una función, solo use la notación de corte cuando lo necesite.