리스트 인덱싱과 슬라이싱에 대해 자세히 알아볼게요.
인덱싱(Indexing)
먼저 인덱싱은 리스트 안에 있는 값을 꺼낼 때 사용해요.
‘리스트 자료형’에서 설명한 것처럼 0부터 시작하는 인덱스 번호를 사용하는데요.
my_list = [1, 2, 3, 4, 5]
print(my_list[1])
>> (출력) 2
print(my_list[4])
>> (출력) 5
print(my_list[-1])
>> (출력) 5
my_list에서 숫자 2를 꺼내기 위해 my_list[1] 이라고 작성할 수 있어요.
그리고 숫자 5를 꺼내기 위해 my_list[4]라고 작성할 수도 있지만
마지막 위치를 의미하는 -1을 인덱스 번호로 사용해도 똑같이 나와요.
즉 my_list[-1]도 숫자 5를 반환해주죠.
다중리스트에서 인덱싱 사용하기
그런데 리스트 안에 또 리스트가 들어가있으면 어떻게 꺼낼까요?
my_list_2 = [1, 2, 3, 4, 5, ["홍길동", "한국인", "개발자"]]
my_list_3 = [1, 2, 3, 4, 5, ["홍길동", "한국인", "개발자"], ["대한민국", ["서울", "대전"]]]
이렇게 리스트 안에 리스트를 넣는 경우가 있는데요.
my_list_2 처럼 리스트 안에 리스트가 들어가 있는 것을 이중리스트라고 해요.
my_list_3은 리스트 안에 리스트가 있는데 그 안에 또 리스트가 있죠? 이것을 삼중리스트라고 해요.
다른 언어에서는 2차원 배열, 3차원 배열이라고 불려요.
그럼 my_list_2에서 ‘홍길동’이라는 값을 꺼내고 싶어요.
마찬가지로 my_list_3에서는 ‘서울’이라는 값을 꺼내고 싶은데 어떻게 할까요?
소스코드를 통해 알아볼게요.
# my_list_2에서 '홍길동'이라는 값 꺼내기
print(my_list_2[5][0])
>> (출력) 홍길동
# my_list_3에서 '서울'이라는 값 꺼내기
print(my_list_3[6][1][0])
>> (출력) 서울
먼저 my_list_2부터 설명해줄게요.
인덱스 번호 | 0 | 1 | 2 | 3 | 4 | 5 |
값 | 1 | 2 | 3 | 4 | 5 | ["홍길동", "한국인", "개발자"] |
my_list_2의 구조를 보면 인덱스가 5번인 곳에 ["홍길동", "한국인", "개발자"]이라는 리스트가 있네요.
“홍길동”이라는 값을 꺼내기 위해 먼저 my_list_2[5] 값을 꺼내줄게요.
자, my_list_2[5] = ["홍길동", "한국인", "개발자"]이에요.
그럼 홍길동은 몇 번째 인덱스 번호에 값이 저장되어 있죠?
맞아요. 0번째 인덱스에 값이 저장되어 있어요.
그럼 이제 my_list_2[5]에서 [0]번째 인덱스를 꺼내달라고 작성했더니
my_list_2[5][0] 이렇게 되었네요.
my_list_3도 마찬가지에요.
먼저 “서울”이라는 데이터는 my_list_3의 6번 인덱스에 있는 ["대한민국", ["서울", "대전"]]에 들어있죠?
my_list_3[6]에서 “서울”은 어디에 있죠?
맞아요. my_list_3[6]에서 1번째 인덱스에 [”서울”, “대전”]이라는 리스트 속에 있네요.
그럼 my_list_3[6][1]에서 “서울”은 0번째 인덱스에 있으니까 my_list_3[6][1][0]이라고 작성하면
“서울”을 꺼낼 수 있어요.
이렇게 하나씩 찾아가면 데이터를 꺼낼 수 있답니다!
인덱싱을 통해 사칙연산 하기
인덱싱을 통해 사칙연산도 할 수 있어요.
my_list 안에 있는 1과 2를 더해볼까요?
my_list = [1, 2, 3, 4, 5, "6"]
# sum에 1 + 2 결과 저장하기
sum = my_list[0] + my_list[1]
print(sum)
>> (출력) 3
덧셈뿐만 아니라 뺄셈, 곱셈, 나눗셈도 할 수 있어요.
대신에 한가지 조심할 점은!
숫자와 문자는 같은 자료형이 아니기 때문에 사칙연산을 할 수 없어요.
둘 중 한가지 타입으로 형변환을 한 다음 계산해야되는 점! 꼭 알아두세요.
리스트 슬라이싱
리스트의 슬라이싱은 데이터를 나눈다는 의미에요.
문자열에서 사용하는 슬라이싱이랑 똑같은 방법으로 사용할 수 있어요.
my_list_1 = [1, 2, 3, 4, 5]
my_list_2 = [1, 2, 3, 4, 5, ["홍길동", "한국인", "개발자"]]
my_list_1에서 2, 3, 4가 저장된 리스트를 출력하고 my_list_2에서는 “홍길동”, “한국인”이 저장된 리스트를 출력해볼게요.
# my_list_1에서 2, 3, 4가 저장된 리스트 출력하기
print(my_list_1[1:4])
>> (출력) [2, 3, 4]
# my_list_2에서 "홍길동", "한국인"이 저장된 리스트 출력하기
print(my_list_2[5][0:2])
>> (출력) ["홍길동", "한국인"]
print(my_list_2[5][:2])
>> (출력) ["홍길동", "한국인"]
리스트 안에서 일부 데이터만 출력(추출)하고 싶을 때 슬라이싱을 사용하면 편하겠죠?
아! 마지막 출력문을 보면 [:2]라고 작성했어요.
이건 리스트의 맨 앞에 요소부터 index 2번 전까지 출력해달라는 의미에요.
결과를 보면 알겠지만 [0:2]와 똑같은 의미라는거 기억해두세요!
'Backend > Python' 카테고리의 다른 글
[Python] 리스트 요소 위치찾기 - index() (0) | 2022.06.14 |
---|---|
[Python] 리스트 연산 - 연결(+), 반복(*), 길이(len) (0) | 2022.06.14 |
[Python] 리스트 요소 삭제하기 - del, pop(), remove(), clear() (0) | 2022.06.13 |
[Python] 리스트 요소 추가, 수정하기 - append(), insert() (0) | 2022.06.13 |
[Python] 리스트(List) 자료형이란? (0) | 2022.06.09 |