list extended () для индексации, вставка элементов списка не только до конца - PullRequest
24 голосов
/ 11 сентября 2011

Я ищу самый питонский способ реализации версии функции списка 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']

Есть лиспособ сделать это без создания нового списка?Может ли это?

1 Ответ

55 голосов
/ 11 сентября 2011

Конечно, вы можете использовать индексирование срезов:

a_list[1:1] = b_list

Просто чтобы продемонстрировать общий алгоритм, если бы вы реализовали функцию my_extend в гипотетическом пользовательском классе list, это выглядело бы так:

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

Но на самом деле не делайте это функцией, просто используйте обозначение среза, когда вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...