Developer/Python

python : 자료형 . 기본 자료형 및 내장 자료형

단님 2025. 3. 20. 22:49
728x90

 

자료형

파이썬의 자료형은 class로 구현되어있다고 생각하면 된다.
type() 또는 .__class__ 를 통해 자료형을 확인할 수있다.

int (정수형)
a = 10
b = -5
c = 0
print(type(a))  # ✅ <class 'int'>

 

float(실수형 / 소수점이 포함된 숫자)
x = 3.14
y = -2.5
z = 0.0
print(type(x))  # ✅ <class 'float'>

 

complex (복소수)
c1 = 2 + 3j
c2 = complex(5, -4)
print(type(c1))  # ✅ <class 'complex'>

 

연산
a = 10
b = 3
print(a + b)   # ✅ 덧셈: 13
print(a - b)   # ✅ 뺄셈: 7
print(a * b)   # ✅ 곱셈: 30
print(a / b)   # ✅ 나눗셈: 3.333...
print(a // b)  # ✅ 몫: 3
print(a % b)   # ✅ 나머지: 1
print(a ** b)  # ✅ 거듭제곱: 1000

 


 

내장 자료형

 

1. 리스트(List)

순서가 있는 변경 가능한(mutable) 자료형
중복을 허용한다.
다양한 데이터 타입을 저장 가능
추가 / 변경 / 삭제가 가능하다

리스트 선언
# 생성과 함께 값을 초기화
lst = [1, 2, 3, "Python", [4, 5, 6]]
print(lst)  # 출력: [1, 2, 3, 'Python', [4, 5, 6]]

# 함수를 통한 생성
lst2 = list()

 

인덱싱과 슬라이싱
(순서가 있는 자료형은 인덱싱 및 슬라이싱이 가능하다.)
print(lst[0])    # 1 (첫 번째 요소)
print(lst[-1])   # [4, 5, 6] (마지막 요소)
print(lst[1:3])  # [2, 3] (1~2번째 요소)

print(lst[:]) # [0::1] 과 동일하다
print(lst[:2])
print(lst[::2]) # step 적용.
print(lst[::4]) # 3 이상의 인덱스를 초과해보니 [0]의 값이 계속 출력된다.

 

sorting() [parameter : reverse (default 값은 Fasle 이다.)] / reverse()
print(lst.sort()) # print() 를 통한 결과 출력이 되지 않는다. sort(reverse=True) 또한 마찬가지로 None 값이 나온다.
lst.sort() # = lst.sort(reverse=False) 와 같다.
lst.sort(reverse=True) # lst.reverse() 와 같다
lst.sort(reverse=True) # 다시 반복한다고 해도 되돌아 가지않는다. 말그대로 오름차순과 내림차순.

 

len()
Built-in Function
print(len(lst)) # 리스트의 length
print(len(lst[0])) # 0번째 인덱스 값의 length

 

append() / insert()
lst.append(5) # 맨 뒤에서 추가
lst.insert(2,5) # 첫번째 인자가 인덱스 위치 , 두번째 인자가 값. =>[2]의 위치에 5를 넣겠다.

 

remove() / pop()
print(lst.pop(3)) # lst[3] 의 삭제 및 값 반환
print(lst.remove(2)) # 2라는 값이 첫번째로 나오는 1개 삭제.

 

del  keyword(예약어)
del lst[2] # lst[2] 삭제
print(lst)

 

clear()
lst.clear() # 비워줌
print(lst) # []

 

2. tuple

순서가 있는 변경 가능한(mutable) 자료형
중복을 허용한다.
추가 / 변경 / 삭제가 불가능하다

선언
# 생성 & 초기화
t = (1, 2, 3, "Python", (4, 5))
print(t)  # (1, 2, 3, 'Python', (4, 5))


# 생성
t2 = tuple()

 

인덱싱과 슬라이싱
print(t[0])    # 1
print(t[-1])   # (4, 5)
print(t[1:3])  # (2, 3)

 

추가 변경 삭제는 불가능 !
t[0] = 10  
# ❌ TypeError: 'tuple' object does not support item assignment

 

3. 문자열

순서가 있는 변경 불가능한(immutable) 자료형
중복을 허용한다.
추가 / 변경 / 삭제가 불가능하다

선언
# 생성 & 초기화
s = "Hello Python"
print(s)  # Hello Python

s3 = """Hello
Python"""

# 생성 & 초기화
s2 = str(2) # s2 = '2'

 

문자열 연산
#선언 
s = 'hi'

#숫자형과의 + 연산
s += 3 # can only concatenate str (not "int") to str

# 숫자형과의 * 연산
s *= 3 # 'hihihi'

# 문자형의 연산
s += str(3) # 'hihihi3'

 

추가 변경 삭제는 불가능 !
s[3] = "3"
# 'str' object does not support item assignment

 

문자열 포멧팅
방법
1. % 기호를 사용한다 ( "%d"%(2))
- %d : 정수
- %f : 부동소수
- %s : 문자열
- %% :리터럴 그 자체
2. format() 함수 (객체.format()으로 접근)
3. f"{변수}입니다"
# 1️⃣ % 기호를 이용한 포매팅 (C 스타일)
name = "Alice"
age = 25
print("이름: %s, 나이: %d" % (name, age))  # ✅ 이름: Alice, 나이: 25

# 2️⃣ format() 함수 사용
print("이름: {}, 나이: {}".format(name, age))  # ✅ 이름: Alice, 나이: 25
print("이름: {0}, 나이: {1}".format(name, age))  # ✅ 순서 지정 가능
print("이름: {name}, 나이: {age}".format(name="Bob", age=30))  # ✅ 키워드 매개변수 사용 가능

# 3️⃣ f-string (Python 3.6+)
print(f"이름: {name}, 나이: {age}")  # ✅ 이름: Alice, 나이: 25

# 4️⃣ f-string에서 표현식 사용 가능
num1, num2 = 10, 20
print(f"합: {num1 + num2}")  # ✅ 합: 30
print(f"16진수: {255:#x}")  # ✅ 16진수: 0xff

 

4. dictionary

key / value 의 쌍으로 이루어진 사전형 자료형.
순서가 없는 변경 가능한(mutable) 자료형 (python 3.7~ 순서 보장)
key의 중복 / 변경 이 불가능하다.
value 중복 / 변경 이  가능하다

선언
# 생성 & 초기화
d = {"name": "Alice", "age": 25, "city": "Seoul"}
print(d)  # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}

# 생성
d2 = dict()

 

값의 접근
print(d["name"])   # 'Alice'
print(d.get("age"))  # 25

 

관련 함수
d["age"] = 30  # 값 변경
d["job"] = "Developer"  # 새로운 키 추가
del d["city"]  # 키 삭제
print(d.keys())   # dict_keys(['name', 'age', 'job'])
print(d.values()) # dict_values(['Alice', 30, 'Developer'])
print(d.items())  # dict_items([('name', 'Alice'), ('age', 30), ('job', 'Developer')])

 

5.  set

순서가 없는 변경 불가능(immutable) 자료형
중복을 허용하지 않는다.
추가 / 삭제가 가능하다
집합 연산이 가능하다.

선언
s = {1, 2, 3, 3, 4, 4, 5}
print(s)  # {1, 2, 3, 4, 5} (중복 제거됨)

 

집합 연산
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}

print(s1 & s2)  # {3, 4} (교집합)
print(s1.intersection(s2)) # 교집합

print(s1 | s2)  # {1, 2, 3, 4, 5, 6} (합집합)
print(s1.union(s2))#합집합

print(s1 - s2)  # {1, 2} (차집합)

 

추가 / 제거
s.add(6)  # 원소 추가
s.remove(2)  # 원소 제거
print(s)

'Developer > Python' 카테고리의 다른 글

python : 할당과 복사  (0) 2025.03.26
python : Iterator, Generator  (0) 2025.03.26
python : 상속 (inheritance)  (0) 2025.03.25
python : 변수  (0) 2025.03.19