파이썬에서는 리스트의 일부분을 copy할 수 있다. 이것을 slicing 이라고 한다
마치 피자 한판에서 한 조각씩 slice라고 하듯이 리스트의 부분들을 복사하는 기능이다.
만약 BTS의 멤버(7명)으로 리스트를 만든다면
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
여기서 2번째 요소(element)부터 4번째 요소까지만 copy해서 sub_bts라는 리스트를 만들고자 한다면...
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[1:4]
## ==> ['제이홉', '진', '정국'
Slice 문법
list_name[start : stop]
slice에서 steps은 그 값만큼 건너뛰어 가져오는 기능이다
slice step
list_name[start : stop : step]
예를들어 bts[1:4:2]를 선언하면,
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[1:4:2]
## ==> ['제이홉',, '정국']
step은 optional이기때문에 선언해주지 ㅇ낳아도 된다. 선언하지 않으면 default로 1값이 들어가기 때문이다.
list를 slicing 할때 start index를 빈칸으로 남겨둔다면...
index값을 0으로 생각하고 sclicing한다
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[:4]
## ==> ['RM', '제이홉', '진', '정국']
반대로 stop index를 빈칸으로 남겨두면...
start index부터 list의 끝까지 가져온다
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[2:]
## ==> ['진', '정국', '지민', '뷔', '슈가']
slicing은 ㅇ리지널 list를 수정하는것이 아니라 새로운 list를 만들어 내는것이다 즉, 일부를 잘라 copy를 해서 만들어낸다
bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[1:4]
print(f"bts = {bts}")
> bts = ['RM', '제이홉', '진', '정국', '지민', '뷔', '슈가']
print(f"sub_bts = {sub_bts}")
> sub_bts = ['제이홉', '진', '정국']
Input으로 주어진 리스트를 slicing 하여 다음 3종류의 sub list를 출력하세요.
리스트의 처음부터 중간까지.
리스트의 중간부터 끝까지.
리스트의 2번째 요소부터 5번째 요소까지 (5번째 요소 포함해서).
예를 들어, 다음과 같은 리스트가 input으로 들어왔다면:
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
다음과 같이 출력되어야 합니다.
[1, 2, 3, 4][5, 6, 7, 8]
[2, 3, 4, 5]
my_list = [s for s in input().split()]
sub_list1 = my_list[:int(len(my_list)/2)]
sub_list2 = my_list[int(len(my_list)/2):len(my_list)]
sub_list3 = my_list[1:5]
print(sub_list1)
print(sub_list2)
print(sub_list3)
## Model Solution
my_list = [s for s in input().split()]
print(my_list[:len(my_list)//2])
print(my_list[len(my_list)//2:])
print(my_list[2:5])