을 감안할 때 :
>>> li=[1,2,3]
고려해야 할 정말 두 경우가 있습니다.
1)에서의 단부를 넘어 연장되는 슬라이스가 그 정의 요소의 겹침 오류없이 이후 빈리스트 제공 할 경우
>>> li[2:]
[3]
>>> li[3:]
[]
>>> li[5555:]
[]
>>> li[1:55555]
[2, 3]
>>> li[555:55555]
[]
2)이 주어 슬라이스 할당, 중복 오류없는 요소가 대체되고 나머지 원소가 추가된다
>>> li[1:5]=[12,13,14,15,16]
>>> li
[1, 12, 13, 14, 15, 16, 15]
>>> li[555:556]=[555,556]
>>> li
[1, 12, 13, 14, 15, 16, 15, 555, 556]
이 지난 경우, 슬라이스 할당 따라서 단지 기존 엘리먼트에 부가 하였다 않은 비 기존 요소 하였다.
>>> li
[1, 2, 3]
>>> li[1:7:2]=range(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 4 to extended slice of size 1
: 오른쪽 조각은 왼쪽에 기존 요소와 일치하지 않는 경우
그러나, 확장 된 조각이 아닌 기존의 요소 (즉, 당신이 list_object[start:stop:step]
이있는 경우)에 대한 ValueError
있을 수 있습니다 그러나 기존의 경우 슬라이스 할당을 확장 할 수 있습니다.
>>> li=['X']*10
>>> li
['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X']
>>> li[1:10:2]=range(5)
>>> li
['X', 0, 'X', 1, 'X', 2, 'X', 3, 'X', 4]
대부분의 경우 예상대로 작동합니다. 할당을위한 단계를 사용하려면 요소가 있어야합니다.
예, 정상적으로 작동합니다. –
Stack Overflow에서 질문을 작성하는 것보다 쉘에서 테스트하는 데 시간이 훨씬 더 걸립니다. 파이썬은 대화 형이므로 상호 작용합니다. –
리스트가 더 짧고 3 원소가 있다면'[: 3]'은 에러없이 더 적은 원소를줍니다. 그래서'my_list [: 3]'의 세번째 원소가 필요하면 길이를 검사해야합니다. – furas