[python] 자료형 정리 2 - 리스트
자료형이란,
프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 의미한다.
1. 자료형 종류
자료형 | 예시 |
숫자(int) | a = 613 |
문자열(str) | b = '613' |
리스트(list) | c = [2, 16, 3, 9] |
튜플(tuple) | d = (9, 1, 9, 3, 10, 13) |
딕셔너리(dict) | e = [1:'이름', 2:'나이', 3:'성별'] |
집합(set) | f = {12, 03, 12, 30} |
불(bool) | True, False |
이 중 리스트(list) 에 대해 알아보려 한다!
2. 리스트 자료형
리스트(list)는,
자료구조 형태 중 하나이고, 순서가 있는 수정가능한 객체의 집합을 의미한다.
대괄호([])로 표현하고, 리스트 내부의 값은 콤마(,)로 구분한다.
(1) 리스트 사용
- 정수, 실수, 문자열, 불 형태의 데이터를 저장할 수 있다.
list1 = [1, 2, 3, 4, 5]
list2 = [2.18, 3.9, 6.13, 9.1]
list3 = ["휴대폰", "이어폰", "커피", "비타민"]
list4 = [True, False, True, True]
- 리스트 안에 리스트 타입으로 삽입이 가능하다.
>>> list5 = [6, 7, 8, 9, ['6.13', 'phone']]
>>> list5
[6, 7, 8, 9, ['6.13', 'phone']]
(2) 리스트 인덱싱
리스트도 문자열처럼 인덱싱과 슬라이싱이 가능하다.
- 인덱싱
인덱싱 적용 후 요소끼리 연산이 가능하다.
>>> a = [1, 2, 3, 4, 5]
>>> b= a[0]
1
# -------------------------
>>> c = [6, 7, 8, 9, 10]
>>> d= c[2] + c[4]
18
- 이중 리스트
>>> e = [1, 2, 3, [4, 5, 6]]
>>> e[-1][0]
4
e[-1][0]을 살펴보면,
e변수의 [-1]는 [4, 5, 6] 이고,
이 요소 중 [0]는 첫번째 요소이기 때문에 4가 출력 된다.
- 삼중 리스트
>>> g = [1, 2, ['a', 'b', ['double', 'triple']]]
>>> g[2][2][0]
'double'
g[2][2][0]을 살펴보면,
g변수의 [2]는 ['a', 'b', ['double', 'triple']] 이고,
이 요소 중 [2]는 ['double', 'triple']이고,
이 요소 중 [0]은 첫번째 요소이기 때문에 'double'이 출력 된다.
(3) 리스트 슬라이싱
문자열과 동일하다.
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
1, 2
>>> c = [1, 2, 3, 4, 5]
>>> c[:2]
[1, 2]
# ------------------------
>>> d = [1, 2, 3, 4, 5]
>>> d[2:]
[3, 4, 5]
c[:2]는 리스트 c의 첫번째 요소부터 두번째 요소까지 나타낸다.
d[2:]는 리스트 d의 세번째 요소부터 끝까지 나타낸다.
(4) 리스트 연산
- 리스트 더하기
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
- 리스트 반복하기
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
- 리스트 길이 구하기
>>> a = [1, 2, 3, 5, 7]
>>> len(a)
5
※ 연산 시 형 오류
# 오류 코드
>>> a = [1, 2, 3]
>>> a[0] + "alphabet"
error
정수와 문자열은 연산이 불가능하다.
>>> a = [1, 2, 3]
>>> str(a[0]) + "alphabet"
1alphbet
이 경우, 정수를 문자열로 변환한다면 연산이 가능하다. str을 씌워주면 된다!
(5) 리스트 함수
> 수정, 삭제, 추가, 정렬, 뒤집기, 반환, 삽입, 제거, 꺼내기, 세기, 확장
- 값 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 5
>>> a
[1, 2, 5]
a[2]의 요소값을 5로 지정한 뒤 리스트a를 출력해보면 요소값이 바껴있음을 확인할 수 있다.
- 값 삭제하기
>>> b = [1, 2, 3]
>>> del b[1]
>>> b
[2, 3]
del a[1]은 리스트b에서 [1]번째 요소를 삭제한다.
>>> a = [1, 7, 8, 2, 3, 4, 5]
>>> del a[2:]
>>> a
[1, 7]
del a[2:]은 리스트a에서 [2]번째 요소부터 끝까지 삭제한다.
- 값 추가하기 (append)
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
# ------------------
>>> a = [1, 2, 3]
>>> a.append([7, 9])
>>> a
[1, 2, 3, [7, 9]]
- 값 정렬하기 (sort)
>>> a = [1, 7, 4, 2]
>>> a.sort()
>>> a
[1, 2, 4, 7]
# --------------------
>>> b = ['t', 'b', 'z', 'y']
>>> b.sort()
>>> b
['b', 't', 'y', 'z']
리스트의 요소를 순서대로 정렬해준다.
- 값 뒤집기 (reverse)
>>> c = [1, 6, 3, 7, 24]
>>> c.reverse()
>>> c
[24, 7, 6, 3, 1]
- 값 위치 반환하기 / 확인하기 (index)
>>> a = [1, 2, 5, 7, 9, 34, 786, 12, 653, 111, 75, 31]
>>> a.index(34)
5
a.index(34)는 숫자 34의 위치 값을 보여준다. 34는 [5]에 위치 하기 때문에 5 반환한다.
요소 개수가 적을 경우 상관없지만, 요소 개수가 너무 많아 육안으로 분석하기 힘들때 사용하면 좋다.
- 리스트에 요소 삽입 (insert)
>>> a = [1, 2, 3, 4]
>>> a.insert(2, 5)
>>> a
[1, 2, 5, 3, 4]
a.insert(2, 5)는 a[2]의 위치에 5를 삽입한다.
대체가 아니고 요소를 삽입하여 그 뒤 요소들은 밀리는 것 뿐이다.
- 리스트 요소 제거 (remove)
>>> a = [3, 5, 6, 2, 1, 3, 5, 1, 1]
>>> a.remove(5)
>>> a
[3, 6, 2, 1, 3, 5, 1, 1]
리스트에서 첫번째로 나오는 5를 삭제한다.
리스트 안에 있는 5를 전부 삭제하는 것이 아닌 첫번째로 나오는 5만 해당한다.
- 리스트 요소 끄집어내기 (pop)
>>> a = [1, 2, 3, 4]
>>> a.pop()
3
>>> a
[1, 2]
a.pop()는 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.
리스트 a를 다시 확인하면 3은 삭제되고 나머지 [1, 2]만 남아있다.
>>> b = [1, 2, 3, 4]
>>> b.pop(1)
2
>>> a
[1, 3, 4]
b.pop(1)은 b[1]의 값을 돌려주고 그 값은 삭제한다.
리스트 b를 다시 확인하면 b[1]의 값인 2는 삭제되고 나머지 [1, 3, 4]만 남아있다.
- 리스트에 포함된 요소 개수 세기 (count)
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
a.count(x)는 리스트 안에 x가 몇 개 있는지 세어 반환한다.
- 리스트 확장 (extend)
>>> a = [1, 2, 3]
>>> a.extend([4, 5])
>>> a
[1, 2, 3, 4, 5]
>>> b = [6, 7]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
a.extend([4, 5]) 는 a+= [4, 5] 와 같다.