4. 고급 자료형 I > 4-2. 리스트에서 데이터 가져오기

리스트에서 데이터 가져오기

해당 파트는 아래 영상들을 시청 후 교안을 정독해주세요.

  1. 값 추가하기
  1. 값에 접근하기
  1. 값 제거하기
  1. 여러 값 가져오기

인덱싱

2-4 문자열 인덱싱에서 배운 개념이지만 한번 더 설명해볼게요. 인덱싱이란, 필요한 데이터를 가져오는 것을 의미합니다. 이 개념을 리스트에 적용하면, 리스트 인덱싱이란 리스트에서 몇번째에 위치한 값을 뽑아오는 행위인 거죠. 인덱싱을 하는 방법은 간단해요. 리스트 뒤에 가져오고 싶은 데이터의 위치를 대괄호로 감싸서 적어주면 돼요. 리스트이름[위치] 이렇게요.

이때 중요한 건 '몇번째'에 위치한 값을 뽑아오냐라는 지점입니다. 일상생활에서 숫자를 셀 때는 '첫번째'부터 세고는 하지만, 파이썬에서는 숫자를 0부터 세거든요. 이 부분을 헷갈리시면 안돼요. 예컨대, a=[1,2,3,4,5] 와 같이 a라는 변수에 리스트가 담겨있습니다. 여기서 1이라는 값을 뽑아오고 싶다면 몇번째 값을 가져와야 할까요? 네, 0번째겠죠. 이렇게 파이썬, 그 중에서도 리스트를 다루실 때는 0부터 센다는 것을 잘 기억해주세요. 아래 예시로 조금 더 자세히 다뤄볼게요.

a=[1,2,3,4,5]  
a[0] #출력값은 1, a라는 리스트에서 0번째에 위치한 값을 가져오기  
a[0]+a[4] #출력값은 6, 1+5=6  
a[5] #error: a[5]값은 없습니다.  
a=[1,2,3,['이정윤', '조용주', '코사다마']]  
a[3] #출력값은 ['이정윤', '조용주', '코사다마']  

퀴즈 : 마지막으로 정의된 리스트 a에서 '코사다마'라는 값을 가져오기 위해서는 어떻게 해야할까요?

인덱싱은 음수로도 가능합니다. 음수의 경우 맨 뒤부터 값을 가져옵니다. 이때 중요한 점은 0번째 값의 위치는 변하지 않는다는 것입니다. 다시 말해, 0번째 값은 여전히 왼쪽 첫번째 값이지, 음수 인덱싱을 한다고 오른쪽 끝값이 0번째 값이 되지는 않습니다.

a=[1,2,3,4,5]  
a[-1] #리스트명[-1]은 리스트의 마지막 값입니다. 따라서 a[-1]의 값은 5입니다.  
a[-3] #출력값은 3

초기화

다수의 데이터를 담는 리스트를 쉽게 다루기 위해서는 초기화도 가능해야겠죠. 리스트를 초기화하는 방법은 매우 쉽습니다. 리스트 이름(변수명) 과 부등호 뒤 빈 대괄호를 적어주면 돼요. 아래처럼요.

a=[1,2,3,4,5]  
a=[] #기존에 데이터가 존재하던 리스트도 빈 대괄호로 선언(부등호)해주면, 초기화돼요.  
a[2] #error: 리스트에 아무런 값도 없으니 당연히 에러가 납니다.

슬라이싱

말 그대로 리스트를 자른다는 건데요, 더 풀어 말하면 리스트의 일부분을 잘라 자른 부분의 데이터 값들을 가져오는 것을 의미해요. 인덱싱과 비슷하지만, 인덱싱은 한번에 한 값만을 가져온다면 슬라이싱은 뭉텅이로 잘라서 많은 값을 가져올 수 있다는 것이 다르죠. 여기서 중요한 점은 리스트를 슬라이싱한 결과의 자료형은 리스트라는 점입니다. 슬라이싱을 하는 법은, 리스트이름[위치A:위치B]와 같아요. 의미는 위치A부터 위치B 이전까지의 값들을 잘라서 가져온다는 거에요. 이때 위치B 값은 포함하지 않는다는 걸 잘 기억해주세요. 재미있는 점은, 위치A를 표기하지 않을 경우 '처음부터' 슬라이싱한다는 의미이고, 위치B를 표기하지 않을 경우 '끝까지' 슬라이싱한다는 의미에요. 아래 예시를 통해 자세히 알아봅시다.

a=[1,2,3,4,5]  
a[1:4] #2부터 5'이전까지'의 값이므로, 출력값은 [2,3,4]입니다. 출력값의 자료형은 리스트입니다.  
a[:3] #처음부터 4'이전까지'의 값이므로, 출력값은 [1,2,3]입니다. 출력값의 자료형은 리스트입니다.  
a[2:3] #3부터 4'이전까지'의 값이므로, 출력값은 [3]입니다. 출력값의 자료형은 리스트입니다.  
a[2] #'슬라이싱'이 아닌 '인덱싱'입니다. 출력값은 3으로, 출력값의 자료형은 정수형입니다. 헷갈리지 마세요!  
a[:-3] #슬라이싱 역시 음수 사용이 가능합니다. 처음부터 3'이전까지'의 값으로, 출력값은 [1,2]입니다.  
a[-3:] #3부터 끝까지의 값으로, 출력값은 [3,4,5]입니다.  
a[-3:-1] #3부터 5'이전까지'의 값으로, 출력값은 [3,4]입니다.  
a=[1,2,3,4,5,6,7,8,9]  
a=[1:8:2] #심화 버전인데요. 첫번째값인 2부터 8번째값인 9'이전까지' 2씩 건너뛰며 값을 가져온다는 의미입니다. 
#[시작숫자:끝숫자:건너뛰는간격]인거죠. 출력값은 [2,4,6,8]입니다.

퀴즈 정답 : a[3][2]

마지막으로 업데이트 된 날짜:
2022년 9월 24일