파이썬 자료형 (2) - 리스트, 튜플, 딕셔너리, 집합, 부울
0. 자료형 분류
* 순차(sequence) 자료형
- 문자열, 수치 등을 관리하기 위한 자료형으로 순서 개념이 있음
- 배열 형식의 구조로 인덱스를 이용하여 데이터에 접근
- 인덱스 값은 0부터 시작하며 자료참조 및 슬라이싱 가능
- 연결이나 반복을 위해 +, * 연산자 사용 가능
- ex) 문자열(string), 리스트(list), 튜플(tuple)
* 비순차(non-sequence) 자료형
- 문자열, 수치 등을 관리하기 위한 자료형으로 순서 개념이 없음
- 인덱스를 이용한 접근 불가
- ex) 딕셔너리(dict), 집합(set)
* 가변 자료형 : 값의 변경이 가능, ex) list, dict, set
* 불변 자료형 : 값의 변경이 불가능, ex) string, tuple
1. 리스트 (List)
- 순차 자료형, 가변 자료형
- 다른 객체(객체:파이썬에서 사용되는 모든 자료형)를 포함하여 저장하는 컨테이너형 객체 (숫자형, 문자형, 숫자 문자 혼합, 리스트 등 모두 가능)
- 인덱스는 0부터, 역인덱스는 -1부터 시작
- [] 로 표현하며 각 요솟값은 쉼표로 구분
- 빈 리스트는 a=[] 또는 a=list()
- + 연산시 같은 자료형끼리 더해줘야 함.
print(a) |
[1, 2, 4] |
* 리스트 관련 함수
a=[1, 2, 3]
(>> 대화형 인터프리터)
함수 | 내용 | 예시 |
len | 리스트 길이 구하기 | 3 |
del | 리스트 요소 삭제 (인덱스로 접근) | [1, 2] |
remove | 리스트 요소 삭제 (값으로 접근) | [1, 3] |
pop | 인덱스 안쓰면 마지막 요소 돌려주고 삭제 |
[1, 3] |
append | 맨 마지막에 요소 추가 (하나만 가능) | [1, 2, 3, 4] |
extend | 원래 리스트에 더하기, 리스트만 가능 | [1, 2, 3, 4, 5] |
sort | 리스트 요소 정렬 (숫자, 문자 다 가능) | [1, 2, 3] |
reverse | 리스트 역순으로 뒤집기 | [3, 2, 1] |
index | (없으면 에러) |
2 |
remove | 첫 번째로 나오는 값 삭제 | [1, 2] |
count | 요소 개수 세기 | 2 |
2. 튜플(Tuple)
- 순차자료형, 불변자료형
- () 로 표현 및 요솟값 구분은 콤마
- 빈 튜플은 ()
- ()는 생략 가능하며 요소가 1개일 경우 끝에 반드시 콤마를 붙여야 함
- 불변이라는 것과 () 또는 생략, 1개인 경우 콤마를 붙이는 것을 제외하면 리스트와 동일함 (값 변경을 제외한 함수 사용 가능)
print(len(a)) |
3 |
3. 딕셔너리(사전, dict)
- 비순차 자료형, 가변 자료형
- 키(key)와 값(value)의 쌍으로 데이터를 저장하며 인덱스로 접근 불가, key로 접근 (value 반환)
- 이러한 대응 관계를 나타내는 자료형을 연관 배열(Associative array) 또는 해시(Hash)라고 함
- 값은 변경 가능, 키는 변경 불가능(key에 list, dict 사용 불가, tuple 사용 가능)
- 하나의 딕셔너리 객체에 중복된 키 존재 불가 (중복되면 하나를 제외한 나머지가 모두 무시됨)
- { Key1:Value1, ... } 로 표현, 콤마로 구분.
- 빈 딕셔너리는 {}
print(dict) |
{'id':'Daisy', 'blog':'daisy-on.tistory.com'} |
* 딕셔너리 관련 함수
dict = {'id': 'Daisy', 'pw': 1234}
함수 | 내용 | 예시 |
keys | key를 dict_kyes 객체로 반환 (참고; values, items도 같음) 리스트로 바꾸지 않더라도 반복 구문에서는 사용 가능하지만 list 내장함수는 사용 불가. 2.7버전까지는 리스트로 반환 |
['id', 'pw'] |
values | value를 dict_values 객체로 반환 | KeyError |
items | value쌍을 튜플로 묶은 값을 dict_items 객체로 반환 | dict_items([('id','Daisy'),('pw',1234)]) |
clear | 딕셔너리 객체 안의 모든 요소 삭제 | {} |
get | - 그냥 key로 접근하는 경우, 없는 key이면 오류 발생. |
'DaisyOn' |
in | 해당 key가 딕셔너리 안에 존재하는지 조사 | >> 'name' in dict False >> 'id' in dict True |
4. 집합(set)
- 비순차 자료형, 가변 자료형
- 인덱스를 이용한 접근 불가
- 중복된 값 허용하지 않음 (중복 제거를 위한 필터 역할로도 종종 사용)
- 빈 집합은 set()
print(b) |
{'e', 'H', 'l', 'o'} #중복을 허용하지 않고 순서가 없기 때문에 이렇게 나옴 |
인덱싱을 지원하지 않기 때문에 인덱스로 접근하려면 리스트나 튜플로 변환 후 접근해야한다.
print(b[1]) |
2 |
* 교집합, 합집합, 차집합, 여집합
- 교집합 : & 또는 intersection
- 합집합 : | 또는 union
- 차집합 : - 또는 difference
- 여집합 : ^ 또는 symmetric_difference
print(s1 ^ s2) # = s1.symmetric_difference(s2) |
{1, 2, 3, 7, 8, 9} |
* 집합 자료형 관련 함수들
s1 = set([1, 2, 3])
함수 | 내용 | 예시 |
add | 값 1개 추가 | {1, 2, 3, 4} |
update | 값 여러개 추가 | {1, 2, 3, 4, 5} |
remove | 특정 값 제거 | {1, 3} |
5. 불(bool)
- 참(True)과 거짓(False)를 나타내는 자료형으로 첫글자는 반드시 대문자
- 자료형에도 참과 거짓이 있으며 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있으면 False, 비어있지 않으면 True.
- 1은 True, 0은 False.
- None은 False.
- bool(값)은 True, False 반환 (ex. bool("python")=True)
값 | 참 or 거짓 |
"python" | 참 |
"" | 거짓 |
[1, 2, 3] | 참 |
[], (), {} | 거짓 |
1 | 참 |
0 | 거짓 |
None | 거짓 |
while문과 함께 쓰이는 경우가 많다.
print(a.pop()) |
1 |
위 예문의 경우, a가 빈 리스트가 될 경우 거짓이 되면서 while문을 빠져나오게 된다.
a.pop()으로 맨 마지막 요소를 하나씩 차례로 제거하다보면 빈 리스트가 되었을 때 반복문이 종료된다.
6. 변수
파이썬에서 사용하는 변수는 객체를 가리키는 것이라고도 말할 수 있으며, 객체란 자료형과 같다.
변수에 어떤 객체가 할당된 경우, 변수는 자동으로 메모리(데이터를 기억하는 공간) 주소를 가리키게 된다.
이 메모리 주소는 id 함수로 확인할 수 있다.
* 리스트 복사
a라는 리스트를 b에 복사한다면(b=a), a와 b의 메모리 주소는 같다.
동일한 객체를 가리키고 있는지 판단하는 명령어 is를 실행하면 True를 반환한다.
print(a is b) |
True |
여기서 a를 바꾼다면 b도 똑같이 바뀐다.
a, b 모두 같은 주소를 가리키고 있기 때문이다(id(a)=id(b))
print(a is b) |
True |
리스트를 복사할 때 다른 주소를 가리키도록 하려면 두 가지 방법이 있다.
1) [:] 사용
print(a is b) |
False |
2) copy 모듈 이용
print(a is b) |
[1, 2, 3] False |
* 변수를 만드는 방법
a=b='python' |
위 방법을 사용하여 두 변수의 값을 쉽게 바꿀 수 있다.
print(b) |
3 |
7. 자료형변환
- 숫자형 자료는 숫자형 자료로 변환 가능하지만 문자형은 숫자형으로 변환 불가능
- float을 integer로 변환할 경우 소수부는 잘림
- 부울타입은 integer(1, 0)으로 변환 가능
- int(), float(), str()
print(int(c)) |
1 |
요약
리스트(list) | 튜플(tuple) | 딕셔너리(dict) | 집합(set) | |
순차/비순차 | 순차 | 순차 | 비순차 | 비순차 |
가변/불변 | 가변 | 불변 | value: 가변 |
가변 |
표현 | [value1, value2, ... ] | value1, value2, ... |
{key1:value1, key2:value2, ...} | set(value) |
접근 | index | index | key | list나 tuple로 변환 후 index 접근 |
중복값 | 허용 | 허용 | 중복 key 불가 | 불가 |
+, * 연산 | 가능 | 가능 | 불가 | 불가 |
비고 | 요소로 모든 자료형 혼합 사용 가능. |
ex: (1,) |
중복된 키는 나머지 무시됨. |
교집합(&), 합집합(|), 차집합(-), 여집합(^) |
* 참고자료
- 회사 교육자료
- 점프 투 파이썬