brunch

9. 리스트, 데이터 목록 혹은 집합

파이썬으로 데이터 분석하기

by 박경아

앞서 문자열이나 수, 불린형과 같은 데이터 유형에 대해 공부했지만 리스트는 여러 개의 데이터를 모아 놓은 데이터 유형을 말한다. 말 그대로 여러 값을 모아 놓은 데이터의 목록 또는 집합이라 생각하면 된다. 하나의 변수를 할당해 사용하는 것도 가능하고 나중에 배울 파이썬의 데이터 분석 라이브러리 ‘판다스’에서 데이터 테이블을 만들 때 여러 개의 데이터 값을 리스트의 형태로 넣는다.


먼저 리스트는 대괄호[ ]를 사용해 만들고, 리스트 안에는 문자열, 숫자, 불린형 데이터를 모두 넣을 수 있다. 다른 데이터 유형을 섞어 만들 수도 있고, 심지어 리스트 안에 리스트를 넣는 것도 가능하다. 리스트 안에 들어가는 값을 요소(element) 또는 아이템(item)이라고 한다.


반 친구들의 이름을 모아 놓은 리스트를 만들어 출력해 보자. 그냥 문자열을 출력(print)할 경우 문자열을 둘러싼 따옴표와 값을 구분하는 콤마가 없어지지만 리스트의 경우 출력을 해도 대괄호, 따옴표, 콤마가 유지되는 것을 볼 수 있다.


리스트를 출력하면



데이터 컨테이너들 - 리스트, 튜플, 딕셔너리


참고로 파이썬에는 여러 개의 값을 담는 데이터 유형으로 리스트 외에 튜플이나 딕셔너리와 같은 것이 있다. 리스트를 배우는 김에 간단히 비교해 보고 넘어가자. 리스트는 문자열이나 수 등의 데이터를 섞어 넣어도 되고 데이터 간 중복도 가능하다.


튜플은 리스트와 마찬가지로 모두 집어 넣을 수도 있고 중복도 가능하지만, 수정이 불가능하고 대괄호[ ]가 아닌 괄호()를 사용한다는 점이 다르다. 딕셔너리는 키값과 값을 쌍으로 가지는 데이터 유형으로 역시 나중에 판다스에서 데이터 테이블을 만들 때 두 번째 방법으로 사용할 수 있다.


my_list = [1, 2, 3, 1] → 중복 및 수정 모두 가능
my_tuple = (1, 2, 3, 1) → 중복은 가능하지만 수정 불가
my_dictionary = {'key1': 'room1', 'key2':'room2'}



리스트를 다루는 방법


이제 리스트를 다루는 방법을 배워보자. 앞서 문자열을 배울 때 그 개념과 함께 특정 문자나 문자열 구간을 출력하는 등 문자열을 다루는 함수들에 대해 배웠다. 리스트를 다루는 방법을 앞서 배운 문자열의 조작법과 비교해 가면 배워보자.


우선 리스트 역시 문자열과 마찬가지로 인덱싱을 통해 특정 요소를 출력할 수 있다. 리스트의 첫 번째 요소를 출력하고 싶다면? 그렇다. 파이썬은 항상 0부터 카운트하므로 인덱스 0을 사용해야 할 것이다.

리스트 인덱싱


그럼 리스트 안의 리스트의 특정 요소를 가르키고 싶을 때는? 해당 리스트의 인덱스 번호와 그 리스트 안의 해당 인덱스 번호를 나란히 써주면 된다. 아래 리스트의 리스트에서 Sunny의 점수를 출력해 보자. Sunny는 리스트의 첫 번째 요소이고, 점수는 해당 리스트 안에서 0번 위치에 있으므로 아래와 같이 쓸 수 있다.


리스트의 리스트 인덱싱


리스트의 특정 부분을 모두 선택하고 싶다면 문자열과 마찬가지로 슬라이싱을 사용하면 된다. 리스트 안의 리스트에서 첫 번째 요소를 제외하고 두 번째부터 모든 요소를 선택해 보자. 인덱싱은 1번에서 시작해 모두 선택하고 싶다면 파이썬에서 끝번호는 항상 포함되지 않으므로 마지막 인덱스 번호를 비워 놓아야 할 것이다.



리스트 역시 문자열과 마찬가지로 다른 리스트와 더할 수 있다. 또한, 리스트에 수를 곱한다면 리스트 안의 요소가 3배로 복제되어 늘어난다. (* 리스트 안의 모든 요소에 3을 곱하고 싶다면 뒤에서 배울 리스트의 이해라는 방법을 사용해야 한다)

리스트에 리스트 더하기, 리스트에 곱하기


또한, 리스트는 요소의 값을 수정하거나 삭제할 수 있는데 앞서 배운 문자열이나 튜플은 개별문자나 요소를 수정하거나 삭제할 수 없다.

리스트의 세 번째 요소를 4로 변경



리스트 관련 파이썬 내장 함수


마지막으로 리스트와 함께 사용되는 파이썬의 내장 함수들에 대해 공부하자. 리스트의 개수를 세거나 리스트에 새로운 아이템을 추가하거나 삭제하는 등 리스트를 다루는 데 유용한 방법들이니 잘 익혀두면 좋다.


참고로 아래 리스트 관련 함수 가운데 len()이나 .count(), .index()는 문자열에서도 공통적으로 사용되는 함수였다.


zip() - 두 개 이상의 리스트를 합쳐 새로운 리스트를 만들 수 있다.
range(num) - 특정 범위 안의 수 리스트를 자동으로 채워준다.
len(list) - 리스트 안의 요소의 개수를 세어준다.
.sort() - 리스트 안의 요소를 알파벳 순서로 나열한다.
.append(sub) - 리스트 마지막에 새로운 값을 추가한다.
.insert(index, sub) - 리스트 해당 인덱스에 새로운 값을 추가한다.
.remove(sub) - 리스트에서 가장 먼저 나오는 해당 값을 제거한다.
.pop(index) - 특정 인덱스 값을 제거한다, 디폴트 값은 마지막 요소를 제거
.count(sub) - 리스트에서 특정 요소의 개수를 세어준다.
.index(sub) - 리스트에서 특정 요소의 위치(인덱스)를 반환한다.




* 참고자료

캐글 강의 https://www.kaggle.com/learn/overview

점프투파이썬 https://wikidocs.net/book/1

파이썬 초보 학습자를 위한 4시간에 배우는 파이썬 기초문법

https://joshua-mobile-choi-1756.trinket.io/python-3-4#/tasks/task-1-print-statement

How to think like a computer scientist : Learning with Python 3

http://openbookproject.net/thinkcs/python/english3e/

keyword
매거진의 이전글8. 내가 원하는 것을 만들어 쓴다, 함수