이번 포스팅에서는 데이터 유형 중 하나인 리스트(list)에 대해 알아보겠습니다.
리스트(list)
리스트는 순서를 가진 여러 값의 배열로써, 대괄호로 구분됩니다.
첫번째 줄처럼 정수형 자료를 담고 있을 수도 있고,
두번째 줄처럼 문자열 자료를 담고 있을 수도 있습니다.
특이하게도 여러 종류의 자료를 함께 담고 있을 수도 있습니다.
리스트 인덱싱(list indexing)하기
A라는 변수에 ['apple' , 'banana' , 'peach'] 리스트가 저장되어 있다고 해봅시다.
파이썬에서는 list 이름 다음 대괄호에 들어 있는 정수를 인덱스라고 하며,
첫번째 값을 0으로 하여 1씩 증가시켜 값을 매깁니다.
즉, 리스트 A는 아래와 같이 이루어져 있으며
A[0]의 값은 아래와 같죠.
인덱스엔 음수값도 존재할 수 있습니다.
음수 값은 리스트의 끝에서부터 매기며
-1은 리스트의 마지막값, -2는 끝에서 두번째 값이 되는 식이죠.
위의 결과와 같이 A[-1]의 값은 'peach'가 됩니다.
슬라이스로 리스트의 일부분을 불러올 수도 있습니다.
A는 0~2까지의 인덱스를 가지므로 슬라이스를 이용해 최대 3개의 값을 불러올 수 있죠.
하지만 A[0:2]으로 리스트의 값을 불러오면 아래와 같은 결과가 나타납니다.
슬라이스는 두번째 인덱스까지 가지만 그 값을 포함하진 않습니다.
그렇기 때문에 A[0:2]는 A[0], A[1]만 불러오게 되죠. 주의하여야합니다.
리스트 안의 리스트
리스트는 다른 리스트 값을 포함할 수도 있습니다.
이 때도 정수를 사용해 인덱싱이 가능한데,
A[x][y]에서 첫번째 인덱스 x는 불러올 리스트를 지정하고,
두번째 인덱스 y는 그 리스트 안의 값을 불러옵니다.
리스트의 길이 (len)
len() 함수를 사용하여 리스트의 길이를 손쉽게 얻을 수 있습니다.
본 예제에서 리스트 A의 인덱스는 0~2 뿐이어서 손쉽게 눈으로도 확인할 수 있지만,
데이터의 양이 많아지면 파악하기 쉽지 않은 경우도 있죠.
이 경우 len()함수를 사용하게 되면 손쉽게 인덱스를 구할 수 있습니다.
즉, len(A) - 1이 인덱스의 마지막값이 되겠네요.
리스트 안의 값 변경 및 병합/복제/제거
리스트 안의 값을 변경하는 방법을 살펴봅시다.
리스트의 인덱스를 사용하여 이미 지정된 값이 있는 위치에 특정 값을 할당할 수 있습니다.
A[0]에는 원래 'apple' 문자열이 위치하고 있었지만,
A[0] = 'melon' 명령어를 통해 A[0]에 'melon' 문자열을 할당함으로써
리스트 A를 변경할 수 있습니다.
그 다음 병합과 복제에 대해 알아보자면
파이썬에서는 특이하게도 +, * 연산자를 통해 리스트를 병합하거나 복제할 수 있습니다.
(다른 언어에서도 되는지는 모르겠습니다. 저는 충격적이었다는...)
예를 들면 이런 것이죠.
정수형 자료를 가진 리스트와 문자열 자료를 가진 리스트끼리도
+ 연산자를 통해 병합할 수 있습니다.
*연산자는 * 뒤에 오는 정수값만큼 리스트를 복제해줍니다.
위와 같이 [1,2,3] 리스트를 3번 복제해주는 것을 볼 수 있습니다.
마지막으로 제거하는 법을 알아봅시다.
제거는 del 문을 통해 인덱스에 해당하는 값을 삭제할 수 있습니다.
할당을 통해 'melon', 'banana', 'peach'로 바뀌었던 리스트 A의
1번 인덱스 값 'banana'를 del 문을 이용해 삭제했더니
위와 같은 결과가 나옵니다.
경우에 따라 유용하게 사용할 수 있을 것 같습니다.
여기까지 리스트에 대해 알아보았습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 데이터 유형: 사전(Dictionary) (0) | 2021.06.10 |
---|---|
[Python] 리스트(list) 활용 - for문, 다양한 메소드 (0) | 2021.06.09 |
[Python] 예외처리 (0) | 2021.06.03 |
[Python] 지역변수와 전역변수 (0) | 2021.05.31 |
[Python] 사용자 정의 함수(def) (0) | 2021.05.30 |