Почему этот код не выдает ошибку при запуске интерпретатором Python.Любопытное поведение списков Python
a = ['A', 'B', 'C']
a[20:] = ['D', 'E']
print a
Выход ['A', 'B', 'C', 'D', 'E']
. Я думал, что Python даст мне ошибку во втором заявлении, так как a
имеет только 3 элемента. Используется ли эта функция при естественном использовании во время кодирования?
Это дает гораздо меньше смысла, чем чтение 'a [20:]'. Довольно странно, что 'assert ['D', 'E'] == a [20:]' здесь не будет – Eric
Это имеет смысл с тем, как работает индексация фрагментов. Так как 'a [3:] == a [20:]', то из-за внутренней реализации на уровне C он просто добавляет элементы, если null или перезаписывает выбранный диапазон. –
@ Эрик: 'a [20:]' просто вернет пустой список. – tuxtimo