TIL[39]. Python_List Slicing

jake.log·2020년 8월 23일
0

Python

목록 보기
21/39

21.List Slicing

  • 파이썬에서는 리스트의 일부분을 따로 copy 할 수 있다.
  • 이것을 slicing 이라고 한다.
  • 리스트의 부분들을 복사하는 기능.

예시)

bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]

bts 의 2번째 요소 부터 4번째 요소만 따로 copy해서 sub_bts 라는 list를 만들때,

sub_bts = bts[1:4]
## ==> ['제이홉', '진', '정국']
list_name[start : stop]

1.Slicing Steps

list slicing 에는 start와 stop이외에도
step 이 있다.

list_name[start : stop : step]

Step은 그 값만큼 건너뛰어 가져오는 기능이다.

step은 optional 이기 때문에 선언해주지 않아도 된다.

만일 선언이 안되면 default 로 1로 지정된다.
그럼으로 위의 경우 step을 선언하지 않았기 때문에 default로 요소를 하나씩 가져온다.

bts[1:4] == bts[1:4:1]

다음 처럼 step을 2로 지정해보자.

sub_bts = bts[1:4:2]

위에 처럼 step을 2로 선언하면 sub_bts 의 값은

['제이홉', '정국'] 이 된다.

2.Slicing Tip

start index를 빈칸으로 남겨두면 해당 list의 첫 요소 부터 시작한다.

bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[:4]
##==> ['RM', '제이홉', '진', '정국']

stop index를 빈칸으로 남겨두면 start index 부터 끝까지 가져온다.

bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[2:]
##==> ['진', '정국', '지민', '뷔', '슈가']

3. Copying. Not Modifying.

Slicing 을 하면 새로운 list를 만들어 낸다.
오해가 있을 수 있는 부분이니 꼭 기억하자!

bts = ["RM", "제이홉", "진", "정국", "지민", "뷔", "슈가"]
sub_bts = bts[1:4]

print(f"bts = {bts}")
bts = ['RM', '제이홉', '진', '정국', '지민', '뷔', '슈가']
print(f"sub_bts = {sub_bts}")
sub_bts = ['제이홉', '진', '정국']

Assignment

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 solution

import statistics

my_list = [s for s in input().split()]

n = len(my_list)
sub_list1 = my_list[0:n//2]
sub_list2 = my_list[n//2:n]
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[1:5])
profile
꾸준히!

0개의 댓글