2012-04-03 2 views
1

Я не совсем понимаю, Что происходит здесьпитона список конкатенации

a=[1,2,3,4] 
b=[5,6,7,8] 

a[len(a):] = b, кажется, эквивалент a.extend(b). , когда я говорю a[(len(a):] не я имею в виду a[4:<end of list a>] = b , который не является

`ничего в = б которая

[]

Почему я получаю [1,2,3,4,5,6,7,8] как результат?

ответ

10

Назначение фрагмента может использоваться для вставки одной последовательности в другую (изменчивой).

>>> a = [1, 2, 3] 
>>> a[1:1] = [4, 5] 
>>> a 
[1, 4, 5, 2, 3] 

Ваш пример - это просто пример вставки в конце.

+0

Хороший ответ :-) –

1

Обозначение ломтика: [start : stop]. Присвоение срезу списка, например [start:], заставляет его вставлять правую часть последовательности в индекс start. Но поскольку нет части stop фрагмента, она всегда будет добавлять всю последовательность (без верхней границы).

В вашем случае вы вставляете индекс 4, который еще не существует, поэтому он вставляет его в конце исходной последовательности.

Python Docs 3.1.4 Lists

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