티스토리 뷰

AI/Python

[Python] 자료형

brave_sol 2025. 3. 4. 23:50
  1. 정수형
  • 양의 정수, 음의 정수, 0
a = 777
print(a) # 777

 

2. 실수형

  • 소수점 아래의 데이터를 포함하는 수 자료형
  • e나 E를 이용한 지수 표현 방식 사용 가능
  • IEEE754 표준에서는 실수형을 저장하기위해 4바이트 혹은 8바이트의 메모리를 할당하므로, 컴퓨터 시스템은 실수 정보를 표현하는 정확도에 한계를 가진다
    • 10진수 → 0.3 + 0.6 = 0.9
    • 2진수 → 0.9와 최대한 가깝게 표현하지만, 미세한 오차 발생
    • round를 이용해 특정 자리까지 반올림을 하는 것으로 문제 해결
  • 나머지(%), 몫 (//), 거듭제곱(**)

3. 복소수형

  • 복소수: 실수와 허수로 이루어진 숫자
    • z = a +bj
    • (a는 실수부, b는 허수부, j는 허수 단위, i^2=-1)
    • complex
z1 = 3 + 4j  # 실수부 3, 허수부 4
z2 = complex(5, -2)  # 실수부 5, 허수부 -2

print(z1)  # (3+4j)
print(z2)  # (5-2j)

z = 3 + 4j
print(z.real)  # 3.0
print(z.imag)  # 4.0

z1 = 1 + 2j
z2 = 3 - 4j

print(z1 + z2)  # (4-2j)  덧셈
print(z1 - z2)  # (-2+6j) 뺄셈
print(z1 * z2)  # (11+2j) 곱셈
print(z1 / z2)  # (-0.2+0.4j) 나눗셈

z = 3 + 4j
print(abs(z))  # 5.0 (√(3² + 4²) = 5)

 

 

4. 문자열

  • 큰따옴표안에 작은따옴표 가능
  • 작은따옴표안에 큰따옴표 가능
  • 백슬래시\ 사용시 따옴표 여러번 사용 가능
  • 덧셈으로 연결 가능
  • 곱하는 경우 여러번 더해짐
  • 인덱싱과 슬라이싱 가능
  • 특정 엔딕스의 값을 변경할 순 없음(Immutable)
a="하이"
a[1]="바"
print(a)

# 에러
Traceback (most recent call last):
  File "/home/runner/workspace/main.py", line 2, in <module>
    a[1]="바"
    ~^^^
TypeError: 'str' object does not support item assignment

 

5. 리스트 [,]

  • 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
  • 인덱스는 0부터 시작
  • 인덱스는 양수는 앞에서부터, 음수는 뒤에서부터 접근
  • 연속적인 값은 슬라이싱(:)으로 가져온다
  • 끝 인덱스는 실제 인덱스보다 +1 (마지막 인덱스는 포함안됨)
  • 리스트 컴프리헨션
  • 코딩테스트의 경우 N*M 크기의 2차원리스트를 초기화해야 할 때 유용하다
  • 리스트는 변경이 가능하기 때문에 딕셔너리의 키 값으로 사용할 수 없다
array = [[0]*2 for _ in range(3)]
# [[0, 0], [0, 0], [0, 0]]
array[0][0] = 1
print(array)
# [[1, 0], [0, 0], [0, 0]]

# 주의!! 리스트 초기화 할 때 잘못된 예시
array = [[0]*2]*3
이 경우 [0,0]인 동일한 객체가 3번 반복 참조되어,
3개 모두 같은 객체를 가리킴
# [[0, 0], [0, 0], [0, 0]] 
array[0][0] = 1
print(array) 
# [[1, 0], [1, 0], [1, 0]]

 

6. 튜플 (,)

  • 한 번 선언된 값을 변경할 수 없다
  • 리스트에 비해 상대적으로 공간 효율적(메모리를 더 적게 사용)
  • 인덱싱, 슬라이싱 가능
  • 언제 알고리즘에 쓸까?
    • 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
    • 최단 경로 알고리즘에서는 (비용:실수형, 노드 번호:정수형)의 형태로 튜플 자료형을 자주 사용
    • 데이터의 나열을 해싱의 키 값으로 사용해야 할 때
    • 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있다
    • 리스트보다 메모리를 효율적으로 사용해야 할 때

7. 사전 {key:value}

  • 순서가 없기 때문인덱싱 사용 불가
  • 키와 값의 쌍을 데이터로 가지는 자료형
    • 리스트나 튜플은 값을 순차적으로 저장
    • 키는 변경 불가능한(Immutable) 자료형
    • 사전 자료형은 해시 테이블을 이용하므로, 데이터 조회 및 수정에 있어 O(1)의 시간에 처리할 수 있다.
    • keys()와 values()로 키와 값에 접근 가능
    • key를 이용해 O(1)의 시간복잡도로 조회

8. 집합 {,}

  • 순서가 없기 때문인덱싱 사용 불가
  • 중복을 허용하지 않는다
  • 순서가 없다
  • 리스트 혹은 문자열을 이용해서 초기화 할 수 있다 :set()
  • 데이터의 조회 및 수정에 있어서 **O(1)**의 시간에 처리할 수 있다
  • 합집합(|), 교집합(&), 차집합(-)
  • 원소 한개 추가 .add(), 원소 여러개 추가 .update(), 특정한 값을 갖는 원소 삭제 .remove()

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함