items[start:stop] # 리스트의 start 인덱스에서 stop-1 인덱스까지 슬라이싱
items[start:] # 리스트의 start 인덱스에서 리스트의 마지막까지 슬라이싱
items[:stop] # 리스트의 처음부터 stop-1 인덱스까지 슬라이싱
items[:] # 리스트 전체 아이템들 반환(복사본)
items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
items[2:5] # 인텍스 2에서 인덱스 5까지(인덱스 5는 제외) 슬라이싱
# [2, 3, 4]
items[5:] # 인덱스 5에서 끝까지 슬라이싱
# [5, 6, 7, 8, 9, 10]
items[:3] # 처음부터 인덱스 3까지(인덱스 3은 제외) 슬라이싱
# [0, 1, 2]
items[:] # 처음부터 끝까지 슬라이싱(즉, 리스트 복사본 반환)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
items[start:stop:step]
items[2:9:3] # 인덱스 2에서 인텍스 9까지(인덱스 9는 제외) 3칸씩 점프
# [2, 5, 8]
items[:10:2] # 처음부터 인텍스 10까지(인덱스 10은 제외) 2칸씩 점프
# [0, 2, 4, 6, 8]
items[2::2] # 인덱스 2에서 끝까지 2칸씩 점프
# [2, 4, 6, 8, 10]
items[::3] # 전체 리스트에 대해서 3칸씩 점프
# [0, 3, 6, 9]
슬라이스에서 start와 stop은 음수를 가질 수 있다. 음수 인덱스는 리스트의 뒤에서 부터 숫자를 세는것과 같기 때문에 음수 인덱스는 리스트의 길이를 모를때 굉장히 유용하다.
items[-1] # 리스트의 길이는 모르지만 제일 마지막 값을 알고 싶을때
# 10
items[-2] # 리스트의 길이는 모르지만 제일 마지막에서 두번째 값을 알고 싶을때
# 9
items[-2:] # 마지막에서 두번째 아이템부터 리스트의 끝까지 슬라이싱
# [9, 10]
items[:-3] # 처음부터 리스트의 끝에서 세번째 아이템 전까지 슬라이싱(즉, 마지막 3개 아이템을 제외)
# [0, 1, 2, 3, 4, 5, 6, 7]
items[10:0:-3] # 인텍스 10에서 0까지(인덱스 0은 제외) 역순으로 슬라이싱
# [10, 7, 4, 1]
items[5:1:-1] # 인덱스 5에서 1까지(인텍스 1은 제외) 역순으로 슬라이싱
# [5, 4, 3, 2]
items[1::-1] # 인덱스 1에서 끝까지 역순으로 슬라이싱
# [1, 0]
items[1:10:-1] # 인텍스 1에서 인덱스 10까지(인덱스 10인 제외) 역순으로 슬라이싱, 하지만 슬라이싱 못하므로 빈 리스트 반환
# []
items[:-3:-1] # 리스트 끝에서 3번째 인덱스까지(인덱스 -3은 제외) 역순으로 슬라이싱
# [10, 9]
items[0:-3:-1] # 인텍스 0에서부터 리스트 끝에서 3번째 인덱스까지(인텍스 -3은 제외) 역순으로 슬라이싱, 하지만 슬라이싱 못하므로 빈 리스트 반환
# []
items[::-1] # 리스트 처음부터 끝까지 역순으로 슬라이싱
# [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
items[::-2] # 리스트 처음부터 끝까지 역순으로 2칸씩 슬라이싱
# [10, 8, 6, 4, 2, 0]
리스트에서 슬라이스(slice) 기호(:) 대신에 slice() 힘수를 사용할 수 있다.
items[start:stop:step]
items[slice(start, stop, step)]