본문 바로가기
파이썬/기초 학습

Day 1: 자료형 & 연산자

by CBROJIN 2025. 7. 19.

1) 학습 요약표

학습내용 설명
기본 자료형 정수, 실수, 문자열, 불리언 타입 소개 (int, float, str, bool)
컬렉션 자료형 list, dict, set, tuple 각각의 특징과 활용법
연산자 산술, 비교, 논리, 멤버십, 객체 비교 연산자 사용법
주요 함수 type(), len() 등 기본 내장 함수 활용법
 

2) 이론 설명

기본 자료형

1. int (정수형)

  • 기능 설명: 정수 값을 저장하는 자료형. 음수, 양수 모두 표현 가능.
  • 동작 원리: 메모리 내 정수로 표현되며 산술 연산에 적합.
  • 예제 코드:
cpu_core = 8
print(type(cpu_core))

# cpu_core 변수에 정수 8 저장
# type() 함수로 해당 변수의 자료형 출력 → <class 'int'>

 

2. float (실수형)

  • 기능 설명: 소수점이 포함된 숫자를 표현할 때 사용
  • 동작 원리: 부동소수점 방식으로 실수를 메모리에 저장
  • 예제 코드:
cpu_freq = 2.5
print(type(cpu_freq)) # <class 'float'> 출력

 

3. str (문자열형)

  • 기능 설명: 문자들의 집합으로 텍스트 데이터 표현
  • 동작 원리: 문자들을 순서 있는 시퀀스로 저장
  • 예제 코드:
hostname = "Router01"
print(type(hostname)) # <class 'str'> 출력

 

4. bool (불리언형)

  • 기능 설명: 참(True)과 거짓(False)을 표현
  • 동작 원리: 논리 판단에서 사용됨 (0 = False, 그 외 = True)
  • 예제 코드:
is_active = True
print(type(is_active))
 

컬렉션 자료형

1. list (리스트)

  • 기능 설명: 여러 데이터를 순서대로 저장하고 수정할 수 있는 가변 시퀀스 자료형
  • 동작 원리: 내부적으로 동적 배열(Dynamic Array) 구조를 사용하여 인덱스를 통한 빠른 접근(O(1))을 지원하며, 데이터가 추가될 때 필요 시 배열 크기를 확장함.
  • 실무 활용: 네트워크 장비 목록이나 로그 데이터를 순서대로 관리할 때 자주 사용됨.
  • 주요 기능: 인덱싱(list[0]), 슬라이싱(list[1:3]), append(), remove(), insert(), pop() 등으로 요소 관리 가능
  • 예제 코드:
devices = ["Router", "Switch", "Firewall"]
print(devices[0])      # Router
print(devices[1:3])    # ['Switch', 'Firewall']

# 요소 추가, 삭제, 수정 실습
devices.append("Access Point")  # 리스트 끝에 추가
print(devices)  # ['Router', 'Switch', 'Firewall', 'Access Point']

devices.remove("Switch")        # 특정 요소 삭제
print(devices)  # ['Router', 'Firewall', 'Access Point']

devices[0] = "Core Router"       # 첫 번째 요소 수정
print(devices)  # ['Core Router', 'Firewall', 'Access Point']

 

2. dict (딕셔너리)

  • 기능 설명: 키-값 쌍으로 데이터를 저장하는 해시 기반 매핑 자료형
  • 동작 원리: 키는 해시값을 기준으로 저장되며, 검색/삽입/삭제가 평균적으로 O(1) 속도로 수행됨. 동일 키 중복 시 마지막 값으로 덮어써짐.
  • 실무 활용: 장비 이름을 키로, 상태/설정 정보를 값으로 매핑해 저장할 때 자주 사용됨.
  • 예제 코드:
device_info = {"name": "R1", "ip": "192.168.0.1", "status": True}
print(device_info["ip"])  # 192.168.0.1

# 요소 추가 및 수정
device_info["location"] = "Seoul"  # 새로운 키 추가
print(device_info)

device_info["status"] = False      # 값 수정
print(device_info)

# 요소 삭제
del device_info["ip"]
print(device_info)

 

3. set (집합)

  • 기능 설명: 중복 없는 데이터를 저장하며, 순서가 없는 컬렉션
  • 동작 원리: 해시 기반으로 요소를 저장하며, 삽입 시 해시값으로 중복 여부를 검사하여 자동으로 중복 제거. 순서가 유지되지 않음.
  • 실무 활용: 중복된 IP 주소, 사용자 계정 등의 중복 제거가 필요한 경우 활용.
  • 예제 코드:
ips = {"192.168.0.1", "192.168.0.2", "192.168.0.1"}
print(ips)  # {'192.168.0.1', '192.168.0.2'} (순서 달라질 수 있음)

# 요소 추가 및 삭제
ips.add("192.168.0.3")     # 새 IP 추가
print(ips)

ips.discard("192.168.0.1")  # 특정 IP 삭제 (없어도 에러 없음)
print(ips)

 

4. tuple (튜플)

  • 기능 설명: 리스트와 유사하지만 변경이 불가능한(immutable) 시퀀스 자료형
  • 동작 원리: 불변 구조로 메모리 사용량이 적으며, 해시 가능하여 dict의 키나 set의 요소로 사용 가능
  • 실무 활용: 좌표, 장비 위치, 변경되면 안 되는 설정값 등 안전하게 보존해야 하는 데이터를 관리할 때 사용됨.
  • 예제 코드:
location = ("Seoul", "DataCenter1")
print(location[1])  # DataCenter1

# 요소 변경 불가 예시 (오류 발생)
# location[0] = "Busan"  # TypeError

# 튜플을 dict의 키로 사용
server_location = {("Seoul", "Rack1"): "Server01"}
print(server_location)

 

항목 list dict set tuple
기본 구조 [a, b, c] {"key": value} {a, b, c} (a, b, c)
저장 형태 값(value) 나열 키-값 쌍 (key-value) 중복 없는 값 집합 값 나열
순서 존재 O (인덱스 O) Python 3.7부터 O (하지만 인덱스는 X) X O (인덱스 O)
인덱스 접근 O (list[0]) X (dict["key"]만 가능) X O (tuple[0])
중복 허용 O 키는 중복 불가, 값은 가능 X O
수정 가능 여부 O (mutable) O (mutable) O (mutable) ❌ (immutable)
정렬 여부 O (sort(), sorted()) X O (정렬하려면 sorted(set)) O (정렬 가능, 변경은 불가)
용도 순서 있는 데이터 나열 명확한 키로 항목 구분 중복 제거, 빠른 포함 검사 고정된 설정값, 키로 사용
사용 예시 장비 목록, 명령어 순서 장비 설정, 사용자 정보 고유 IP 주소, 중복 제거 위치 좌표, 딕셔너리 키

 

연산자

1. 산술 연산자
  • 기능 설명: 숫자형 변수 간의 덧셈, 뺄셈, 곱셈, 나눗셈 등 수학 연산 수행
  • 동작 원리: +, -, *, /, //, %, ** 연산자는 내부적으로 __add__, __sub__, __mul__, __truediv__, __floordiv__, __mod__, __pow__ 등의 특수 메서드를 호출함
  • 예제 코드:
print(10 + 5)        # 15
print(10 / 4)        # 2.5
print(2 ** 3)        # 8
2. 비교 연산자
  • 기능 설명: 두 값 또는 객체의 크기/동등성 등을 비교하여 True 또는 False 반환
  • 동작 원리: ==, !=, >, <, >=, <= 등은 __eq__, __ne__, __gt__ 등 비교 메서드를 호출하여 판단
  • 예제 코드:
print(3 > 2)         # True
print(5 != 5)        # False
3. 논리 연산자
  • 기능 설명: 논리적 참/거짓 판단 및 조건 분기 처리
  • 동작 원리: and, or, not은 불리언 값을 기반으로 단락 평가(short-circuit evaluation) 수행함
  • 예제 코드:
print(True and False)   # False
print(not True)         # False

 

4. 멤버십 연산자
  • 기능 설명: 특정 값이 컬렉션 자료형에 포함되어 있는지 여부 판단
  • 동작 원리: 내부적으로 시퀀스나 컬렉션 객체의 __contains__() 메서드를 호출하여 포함 여부 판단
  • 예제 코드:
devices = ["R1", "R2"]
print("R1" in devices)   # True
print("R3" not in devices)  # True
5. 객체 비교 연산자
  • 기능 설명: 두 객체가 메모리상 동일한 객체인지 비교함
  • 동작 원리: is, is not은 두 객체의 메모리 주소(id)가 같은지를 비교함 (id(a) == id(b) 기준)
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b)   # True (같은 객체)
print(a is c)   # False (내용은 같지만 다른 객체)
 

주요 함수

type() 함수

  • 기능: 변수의 자료형 반환.
  • 동작 원리: 객체의 __class__ 속성을 참조해 자료형 확인.
  • 예제:
print(type("hello"))  # <class 'str'>

 

len() 함수

  • 기능: 길이 반환.
  • 동작 원리: 객체의 __len__() 메서드 호출, 시퀀스는 요소 개수, 매핑은 키 개수 반환.
  • 예제:
print(len([1, 2, 3]))  # 3

 

3) 기본 실습 과제 (5개)

1. 리스트에 장비 추가/삭제/수정 후 출력

2. 딕셔너리에 키 추가와 값 수정 후 출력

3. 집합을 사용하여 중복된 IP 제거

4. 튜플을 dict 키로 활용

5. 문자열과 리스트 길이 출력