2013-08-03 3 views
1

Я новичок в Python, и у меня есть сомнения относительно операции вставки в списке.Операция вставки Python в списке

Пример 1:

mylist = ['a','b','c','d','e'] 
mylist.insert(len(mylist),'f') 
print(mylist) 

Выход:

['a', 'b', 'c', 'd', 'e', 'f'] 

Пример 2:

mylist = ['a','b','c','d','e'] 
mylist.insert(10,'f') 
print(mylist) 

Выход:

['a', 'b', 'c', 'd', 'e', 'f'] 

Во втором примере почему он все еще вставляет элемент «f» в список, даже если я даю индекс 10 для ввода метода?

+1

Что вы ожидаете от остальных индексов, если оно помещает '' f'' в 10-й индекс? – Volatility

+1

@Volatility a не необоснованное предположение было бы ошибкой какого-то типа –

+1

Я ожидал ошибки. Почему он работает таким образом и не дает никаких ошибок. –

ответ

4

Функция list.insert будет вставляться перед указанным индексом. Поскольку list не так долго в вашем примере, он идет в конец. Почему бы просто не использовать list.append, если вы все равно хотите положить материал в конец.

x = ['a'] 
x.append('b') 
print x 

Выход

['a', 'b'] 
+0

Спасибо за ваш ответ, но это не очистило мое сомнение. –

+1

@vivekratnaparkhi: Это поведение четко указано в [Документах Python Docs] (http://docs.python.org/2/tutorial/datastructures.html#more-on-lists). Quoting - 'a.insert (0, x) вставляет в начале списка, а a.insert (len (a), x) эквивалентно a.append (x) .' –

+1

@vivekratnaparkhi Если вы хотите, чтобы филофатические ответьте, прочитайте по принципу наименьшего удивления. –

2

понятие здесь "вставить перед элементом с этим индексом". Чтобы иметь возможность вставлять в конце, вы должны разрешить недопустимый индекс. Поскольку в Python нет четко определенных «сквозных итераторов» или чего-либо еще, имеет смысл просто разрешить все индексы, чем разрешать один недопустимый, но не другие.

+0

Это имеет смысл. Благодарю. –

Смежные вопросы