2. 파이썬 프로그래밍의 기초, 자료형
자료형: 프로그래밍을 할 때 쓰이는 숫자, 문자열 등과 같이 자료 형태로 사용하는 모든 것을 뜻함. 프로그램의 기본이자 핵심 단위.
2-5. 딕셔너리
대응 관계를 나타낼 수 있는 딕셔너리(dictionary) 자료형. ‘연관 배열(associative array)’또는 ‘해시(hash)’라고도 한다.
예를 들어 4명의 사람이 있다고 가정하고 각자의 특기를 표현할 수 있는 좋은 방법
| 구분 | 설명 | 예시 | 결과 |
| 기본 형태 | {키: 값} 형태로 구성 ※ 키(key)로 값(value)에 접근 |
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'} | name=pey phone=0119993323 birth=1118 |
| 값 접근 | 키를 이용해 값 참조 | a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'} a['name'] |
'pey' |
| 새 항목 추가 | 새 키에 값 할당. 새 항목 추가됨 | ① a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'} a['address'] = 'Seoul' ② a[3] = [1, 2, 3] a |
① {'name':'pey', 'phone':'0119993323', 'birth':'1118', 'address'] = 'Seoul'} ② {'name':'pey', 'phone':'0119993323', 'birth':'1118', 'address'] = 'Seoul', 3:[1,2,3]} |
| 항목 삭제 | del[key]이용, {Key: Value} 쌍 삭제 | a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'} del a['phone'] a |
a = {'name':'pey', 'birth':'1118'} |
| 키 중복 불가 | 중복된 키 입력 시 마지막 값으로 덮어씀 | {'a':1, 'a':2} | {'a':2} |
| 값 중복 가능 | 동일한 값은 여러 키에 사용 가능 | {'a':1, 'b':1} | 가능 |
| 키 조건 | 키로 쓸 수 있는 자료형: 문자열, 숫자, 튜플 (리스트×) | ① {(1,2):'OK'} ② grade = {'pey': 10, 'julliet': 99} grade['pey'] 10 grade['julliet'] |
① {'(1, 2)': 'OK'} ② 99 |
| 딕셔너리 함수 | |||
| a.keys() | 키 리스트 반환(반복문 사용 가능) | dict_keys(['name','birth']) dict['name'] |
|
| a.values() | 값 리스트 반환 | dict_values(['pey','1118']) | |
| a.items() | (키, 값) 쌍 튜플 리스트 반환 | dict_items([('name','pey'),('birth','1118')]) | |
| a.clear() | 모든 항목 삭제 | a.clear() a |
{} |
| a.get('키') | 키의 값 반환 (없을 시 None) ※ None = 거짓 |
a.get('birth') | '1118' |
| a.get('age', 0) | 키 없을 시 디폴트값 반환 | 0 | |
| 'key' in a | 키 존재 여부 확인 | 'name' in a | True |
| a.pop(x) | Key가 x인 항목을 삭제한 후 그 값을 반환 | a.pop('phone') | phone '010-9999-1234' a {'name': 'pey', 'birth': '1118'} |
| 반복문 활용 | 딕셔너리의 키나 값 순회 | for k in a.keys(): print(k) ※ 들여쓰기 필수 |
name, birth, … |
2-6. 집합
수학의 집합 개념과 동일한 자료형이다. 중복을 허용하지 않고 순서가 없는 데이터들의 모임으로, 교집합, 합집합, 차집합 등의 집합 연산을 쉽게 처리할 수 있다.
비어 있는 집합 자료형은 s = set()로 만들 수 있다. s = {}로 만들면 딕셔너리가 되므로 주의해야 한다.
| 구분 | 설명 | 예시 | 결과 |
| 기본 형태 | 중복을 허용하지 않고, 순서가 없는 자료형 | s1 = {1, 2, 3} | {1, 2, 3} |
| set() 함수 사용 | 리스트나 문자열 등을 집합으로 변환 ※ - 집합은 중복을 허용하지 않음(데이터의 중복을 제거) - 순서가 없음.(Unordered). |
① s2 = set([1, 2, 3]) s2 ② s2 = set("hello") s2 |
① {1, 2, 3} ② {'e', 'h', 'l', 'o'} |
| 중복 제거 활용 | 리스트의 중복 제거 용도로 사용 | list(set([1,1,2,2,3])) | [1, 2, 3] |
| 순서 없음 | 인덱싱 불가, 대신 리스트/튜플 변환 후 사용 | list(s1)[0] | 변환 후 인덱싱 가능 |
| 교집합 (intersection) |
공통 원소 추출 | ① s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9]) s1 & s2 ② s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9]) s1.intersection(s2) |
① {4, 5, 6} ② {4, 5, 6} |
| 합집합 (union) | 모든 원소 합침 (중복 제외) | ① s1 | s2 ② s1.union(s2) |
① {1, 2, 3, 4, 5, 6, 7, 8, 9} ② {1, 2, 3, 4, 5, 6, 7, 8, 9} |
| 차집합 (difference) |
한쪽에만 있는 원소 추출. 즉 공통된 원소는 제외 | ① s1 - s2 ② s2.difference(s1) |
① {1, 2, 3} ② {8, 7, 9} |
| 대칭차집합 (symmetric_difference) |
한쪽에만 존재하는 원소 | ① s1 ^ s2 ② s1.symmetric_difference(s2) |
① {1, 2, 3, 7, 8, 9} ② {1, 2, 3, 7, 8, 9} |
| 요소 추가 (add) | 원소 1개 추가 | s1 = set([1, 2, 3]) s1.add(4) s1 |
{1, 2, 3, 4} |
| 여러 요소 추가 (update) |
여러 원소 한 번에 추가 | s1 = set([1, 2, 3]) s1.update([5,6]) s1 |
{1,2,3,5,6} |
| 요소 제거 (remove) |
특정 원소 제거 (없으면 오류) | s1 = set([1, 2, 3]) s1.remove(2) s1 |
{1,3} |
| 요소 제거 (discard) |
특정 원소 제거 (없어도 오류 없음) | s1 = set([1, 2, 3]) s1.discard(10) s1 |
{1,3} # 그대로 유지 없는 값이어도 오류가 발생하지 않음 |
| 모든 원소 제거 (clear) |
집합 비움 | s1 = set([1, 2, 3]) s1.clear() s1 |
set() |
| 길이 확인 | 원소 개수 반환 | s1 = set([1, 2, 3]) len(s1) |
3 |
2-7. 불(bool)
불 자료형은 참(True) 과 거짓(False) 두 값만 가지며, 비교·논리 연산이나 조건문에서 핵심 역할을 한다.(첫 문자는 항상 대문자로 작성)
| 구분 | 설명 | 예시 | 결과 |
| 정의 | 참(True) 또는 거짓(False)을 나타내는 자료형 | a = True b = False |
불(bool) 타입 |
| 타입 확인 | type() 함수로 확인 가능 x의 자료형을 확인 |
type(True) | <class 'bool'> |
| 비교 연산 결과 | 조건문의 리턴값으로도 사용됨 | ① 1 < 2 ② 3 == 4 ③ 1 != 1 |
① True ② False ② False |
| 논리 연산자 | and: 양쪽 조건이 모두 참일 때만 True를 반환 or: 양쪽 조건 중 하나라도 참이면 True를 반환 not: 조건의 참/거짓을 뒤바꾼다. |
① True and False ② not True |
① False ② False |
| 조건문에서 사용 | 불값이 조건문의 판단 기준이 됨 | if True: print("참") | "참" 출력 |
| 자료형의 참/거짓 판단 | 파이썬의 모든 자료형은 참(True) 또는 거짓(False)으로 평가 가능 | ||
| ㄴ 참으로 취급 | 값이 있는 모든 객체 | "python", [1], 10, (1,2) | True |
| ㄴ 거짓으로 취급 | 값이 없는 객체 | "", [], {}, (), 0, None | False |
| bool() 함수 | 객체를 불값으로 변환 | ① bool("hello") ② bool([]) |
① True ② False |
2-8. 변수: 자료형의 값을 저장하는 방법
※ 변수명 규칙
- 영문자, 숫자, 언더스코어(_)만 사용할 수 있다. 단어 사이에 언더스코어)를 권장. 의미가 명확한 이름을 사용.
- 숫자로 시작할 수 없다. 너무 짧거나 긴 이름은 피한다.
- 예약어는 사용할 수 없다.
- 대소문자를 구분한다.
| 예약어 | False, None, True, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield |
| 구분 | 설명 | 예시 | 결과 |
| 변수의 개념 | 어떤 값을 저장하기 위한 이름(공간) | a = 1 b = "python" |
변수 a에 1 저장 변수 b에 문자열 저장 |
| 할당 연산자 | = 는 “같다”가 아니라 오른쪽 값을 왼쪽 변수에 저장한다는 의미 |
x = 3 | x에 3이 저장됨 |
| 여러 변수 동시 할당 | 여러 값을 한 줄에 동시에 저장 가능 | a, b = 1, 2 | a=1, b=2 |
| 같은 값 여러 변수에 할당 |
하나의 값을 여러 변수에 동시에 저장 | a = b = c = 0 | 모두 0 저장 |
| 변수에 다른 변수 대입 |
기존 변수의 값을 새 변수에 복사 | a = 3 b = a |
b는 3 |
| 변수의 실제 저장 방식 |
변수는 객체(값) 를 가리키는 이름표(label) 역할 | a = [1,2,3] b = a |
a, b 모두 같은 리스트 객체 참조 |
| 객체 주소 확인 | id() 함수로 변수에 저장된 객체의 주소 확인 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 공간 주소 |
a = [1,2,3] id(a) |
4303029896 객체 고유 ID 값 반환 |
| 동일 객체 비교 | is 연산자로 같은 객체인지 판단 | a is b # a와 b가 가리키는 객체가 같을까? |
True (같은 객체일 때) |
| 독립된 객체로 복사 | copy() 또는 슬라이싱 사용 | b = a[:] from copy import copy b = copy.copy(a) |
새로운 객체 생성 |
| 변수 삭제 | del 명령으로 메모리에서 제거 | del a | a 변수 삭제됨 |
| 주의점 | 리스트나 딕셔너리 등 mutable(변경 가능) 객체는 같은 주소를 공유할 수 있으므로 주의 |
a = [1,2] b = a a.append(3) |
b도 [1,2,3]로 변경됨 |
'미래 먹거리를 위하여' 카테고리의 다른 글
| [파이썬 정복하기] 점프 투 파이썬 4장 – 파이썬의 입출력 (책 없이 시작하기) (0) | 2025.10.21 |
|---|---|
| [파이썬 정복하기] 점프 투 파이썬 3장 – 프로그램의 구조를 쌓는다! 제어문 (책 없이 시작하기) (0) | 2025.10.20 |
| [파이썬 정복하기] 점프 투 파이썬 2장 – 파이썬 프로그래밍의 기초, 자료형 ① (책 없이 시작하기) (0) | 2025.10.18 |
| [파이썬 정복하기] 점프 투 파이썬 1장 – 파이썬(Python)이란 무엇인가? (책 없이 시작하기) (1) | 2025.10.17 |
| [인공지능] LG 'Radio Optimism 캠페인' - 160자로 만든 나만의 음악 (6) | 2025.09.01 |