그동안은 '박스 하나' 가져와서 하나씩만 넣었는데, 자료가 많을 때 '서랍장'을 가져와서 여러 개를 담을 수 있는 방법은 없을까? "리스트"라는 자료형이 바로 그 대안이다. 리스트의 사용법은 굉장히 단순하다. 리스트명 = [ 요소1, 요소2, 요소3, ....] 과 같이 요솟값들을 대괄호([])로 감싸주면 그만이다. 리스트 안에는 아무것도 없는 비어 있는 리스트든 문자 하나든 문자열 여러 개든 그 어떠한 자료형도 모두 포함시킬 수 있다. 또한 리스트도 인덱싱과 슬라이싱이 가능하다. 리스트 안에 리스트를 포함하는 것도 가능하다. 아래 예시 코드를 보면 바로 이해가 갈 것이다.
※삼중 리스트도 인덱싱할 수 있지만 리스트를 그런 식으로 다중 중첩해서 사용하면 혼란이 가중되므로 자주 사용하지는 않는다.
슬라이싱은 문자열에서 했던 것과 정확히 동일하다. 예시를 통해 간단하게만 짚고 넘어가자면, a = [1, 2, 3, 4, 5]라 할 때, b = a[0 : 3]이면 리스트 a에서 첫 번째 요소부터 a[2]까지 [1, 2, 3]으로 나타낸다. 앞선 예시 코드 b = [1, 2, 3, ['a', 'b', 'c'] ]에서 가령 b[3][ :1]이라고 한다면 ['a', 'b', 'c'] 요소에서 ['a']를 나타낸다.
또한 리스트는 문자열과 마찬가지로 리스트 자체의 연산이 가능하다. a=[1, 2, 3], b=[4, 5, 6] 일 때, a + b = [1, 2, 3, 4, 5, 6]이다. a * 3이라 하면, 결과는 [1, 2, 3, 1, 2, 3, 1, 2, 3]으로 나올 것이다. 리스트의 길이 또한 문자열의 길이와 마찬가지로 len() 함수를 이용해서 알아낼 수 있다.
★주의 사항★
만약 리스트에서 연산을 할 때, a= [1, 2, 3]에서 a[0] + "hi"라고 하면, 1hi가 출력되지 않을까 싶지만 안타깝게도 오류가 발생한다. 왜냐하면 a[0]에 저장된 값은 1이라는 정수형이니 "hi"라는 문자열과의 연산은 당연하게도 가능하지 않다. 따라서 우리는 정수형을 문자열로 변경해주는 함수가 필요하다. 그 함수가 바로 str() 함수이다. 위의 예시에서 바로 적용해보자면, str(a[0]) + "hi" 으로 입력하면 된다.
다음에는 리스트의 값의 수정과 삭제에 대해 간단하게 코드로 구현해보자.
리스트에서도 여러 가지 함수를 리스트 변수 뒤에 온점(.)을 붙여서 사용할 수 있다. 대표적인 함수들을 표로 정리해보았다.
함수 | 기능 |
.append() | 리스트의 맨 마지막에 요소 추가 |
.sort() | 리스트의 요소를 순서대로 정렬 |
.reverse() | 리스트를 거꾸로 뒤집음 |
.index() | 리스트 안에 ()안의 값이 있으면 그 값의 인덱스 값을 리턴 |
.insert() | 리스트의 원하는 위치에 원하는 요소 값을 삽입(괄호 안에 두 값을 넣어야 함) |
.remove() | 리스트 안에서 ()안의 값이 첫 번째로 나올 때의 값을 삭제 |
.pop() | 리스트의 맨 마지막 요소를 리턴하고 삭제 |
.count() | 리스트에 포함된 ()안의 요소의 개수 세기 |
.extend() | 리스트를 확장(괄호 안에는 리스트만 올 수 있다.) |
다음 살펴볼 자료형은 "튜플" 자료형이다. 앞서 살펴본 리스트는 요솟값을 생성하고 삭제, 수정이 가능했지만, 튜플은 요솟값을 바꿀 수 없다. 그리고 리스트와 다르게 요솟값이 1개, 예를 들어 a = (1, ) 처럼 1개밖에 없어도 요소 뒤에 쉼표를 반드시 붙여야 한다. 그리고 소괄호를 생략해도 무방하다. 다시 한번 정리하자면, 튜플 자료형은 리스트 자료형과 유사하나 튜플은 요소들을 소괄호로 감싸고 요솟값들의 변경이 불가하다는 점에서 차이가 있다. 따라서 프로그램을 만들 때 어떤 요솟값이 변하지 않기를 바라면 튜플을 사용, 자주 값을 변경시켜야 한다면 리스트를 사용하는 것이 바람직하다. 튜플 자료형은 인덱싱, 슬라이싱, 연산, 길이 구하기 등은 가능하다.
이제 자료형 중에서 굉장히 중요한 "딕셔너리 자료형" 에 대해 알아보겠다. 그렇다, 말그대로 사전을 떠올리면 된다. 우리가 사전에서 단어를 찾아보면 옆에 그 단어에 대한 뜻이 같이 쌍으로 있듯이 딕셔너리 자료형은 Key와 Value를 한 쌍으로 가지고 있는 자료형이다. 앞서 살펴본 자료형들과 달리 그저 Key를 통해 Value값을 확인해보는 것이다. 딕셔너리 자료형의 기본 모습은 {Key1: Value1, Key2: Value2, Key3: Value3 ....} 처럼 사용하면 된다. 딕셔너리 또한 추가, 삭제가 가능하다. 아래 코드로 직접 확인해보자.
아래의 코드와 같이 마치 사전처럼 Key값을 입력하면 그에 따른 Value값을 볼 수 있다. 인덱스와 똑같아 보이지만 아무 관계가 없다. 그리고 그동안 공부했던 자료형들은 인덱싱, 슬라이싱 기법같은 것들을 사용했지만 딕셔너리는 오로지 Key를 이용해서 Value값을 얻는 기능 단 1가지이다.
딕셔너리 사용 시 간단한 주의사항이 있는데 Key값이 같아서는 안된다. 조금만 생각해보면 당연하다는 것을 알 수 있다. Key는 고유한 값이기 때문에 똑같은 Key값이 존재하면 하나를 제외한 나머지는 모두 무시된다. 그리고 Key값에 리스트가 오는 것도 안된다. 다만, 튜플 자료형은 Key로 사용이 가능하다. 딕셔너리에서 key로 쓸 수 있는지에 대한 여부는 Key값이 변하는 값인지 아닌지에 따라 달려있다. 그렇지만 Value에는 변하는 값이든 아니든 상관없이 넣을 수 있다.
이제 딕셔너리 자료형과 관련된 함수들에 대해 알아보겠다.
함수 | 기능 |
.keys() | key들만 뽑아내기 |
.values() | value들만 뽑아내기 |
.items() | key와 value 각각 쌍으로 뽑아내기 |
.clear() | 딕셔너리 안의 모든 요소 삭제 |
.get() | key로 value 값 얻기 |
in | 딕셔너리 안에 해당 key가 있는지 조사 |
여기서 get() 함수를 사용할 때 만약 딕셔너리 내에 존재하지 않는 key값을 입력하면 None(거짓)을 리턴한다. 하지만 미리 정해둔 디폴트 값을 가져오게 하려면 get(x, '설정한 디폴트 값')을 사용하면 된다. 그리고 in 함수는 'Key'값이 '리스트'안에 있느냐는 질문처럼 코드를 작성하면 된다. 가령, a = {1 : 'h', 2 : 'j'} 인데 1 in a 라고 한다면 'True'를 리턴할 것이고 리스트에 없는 Key값을 입력하면 'False'를 리턴할 것이다.
파이썬 프로그래밍에 관한 글은 "이지스퍼블리싱"의 "Do it!, 점프 투 파이썬"이라는 책을 학습하고 정리한 것입니다.
'Programming Language > Python' 카테고리의 다른 글
파이썬 - (반복문 中 for 문) (0) | 2023.07.10 |
---|---|
파이썬 - (반복문 中 while 문) (0) | 2023.07.09 |
파이썬 - (if 제어문) (0) | 2023.07.08 |
파이썬 - (자료형 中 집합 ~ 변수) (0) | 2023.07.06 |
파이썬 - (자료형 中 숫자 ~ 문자열) (0) | 2023.07.06 |