Как назначается разрезание, если начальный и конечный индексы одинаковы? [dубликат]

, практикующий некоторый python, который является довольно легким языком для захвата.

У меня есть

>>> L = [1,2,3,4]
>>> L[1:1] = [1,2,3]
>>> L
[1, 1, 2, 3, 2, 3, 4]

, поэтому на строке два фактически L[1:1] - пустой список, но как может ли python понять, что вставить список [1,2,3], начиная с 1. Я думаю, что есть некоторые внутренние элементы, которые не прозрачны для нас, здесь, по-видимому, я думаю, L[1:1] возвращает ссылку на индекс 1, даже если это возвращает пустой список ...

С наилучшими пожеланиями, Umut

2
задан 1 January 2011 в 19:24

2 ответа

Нарезка ведет себя по-разному в зависимости от того, находится ли она в левой или правой части выражения. Когда он находится на левой стороне, он не возвращает список - вместо этого он ведет себя как объект среза, который знает больше о срезах и имеет назначение, специально переопределенное для работы в качестве вставки.

3
ответ дан 15 August 2018 в 15:57
  • 1
    Спасибо за быстрые ответы ... Я получил это сейчас ... – Umut Tabak 1 January 2011 в 19:29

Официальное руководство Python объясняет это лучше всего, на мой взгляд. В конце главы 3.1.2 приведена следующая диаграмма:

 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5

. Это иллюстрирует то, что вы можете думать об индексах, указывая МЕЖДУ элементами. Итак, на этой иллюстрации при задании среза [1:1] вы фактически ссылаетесь на пространство между H и e, но не включаете их.

Если вы хотите перезаписать H и e, вы должны указать срез [0:2].

1
ответ дан 15 August 2018 в 15:57

Другие вопросы по тегам:

Похожие вопросы: