TIL/Python

241118 인공지능을 위한 파이썬 - 2주차_1

beady 2024. 11. 18. 15:07

컬렉션 자료형의 종류

 

1. 리스트 - 가변 자료형

# 리스트 생성
anything_list = [4, 1, 3.14, 5, 7]

# 리스트 요소 접근
anything_list[0] # 4

# 슬라이싱을 통해 리스트 요소 범위로 접근
anything_list[0:2] # [4, 1]
anything_list[-1]  # 7 (거꾸로 뒤에서 접근도 가능)

# 리스트는 가변 자료형이기 때문에 데이터 변경이 가능
anything_list[1] = "beady"
anything_list # [4, 'beady', 3.14, 5, 7]

# 리스트에 요소 추가
anything_list.append(100)
anything_list # [4, 'beady', 3.14, 5, 7, 100]

# 리스트에 요소 제거
anything_list.remove("beady")
anything_list # [4, 3.14, 5, 7, 100]

# 리스트의 길이 확인
len(anything_list) # 5

# 리스트 순서대로 정렬
anything_list.sort()
anything_list # [3.14, 4, 5, 7, 100]

 

 

2. 튜플 - 리스트와 다르게 불변 자료형으로 요소 변경이 불가

# 튜플 생성
number_tuple = (5, 2, 3, 7)

# 튜플 요소 변경 불가
number_tuple[0] = 1 # error

 

 

3. 딕셔너리 - 키-값의 데이터를 쌍으로 저장하는 자료형
※ 파이썬 버전에 따라 삽입된 값 순서 유지 가능한 유무가 다름. 주의 필요.(Ver 3.7부터 순서 유지)

# 딕셔너리 생성
name_dict = {"이름":"beady", "성":"Lee"}

# 딕셔너리 키-값 추가
name_dict["나이"] = 30
name_dict # {'이름': 'beady', '성': 'Lee', '나이': 30}

# 딕셔너리 키-값 제거
del name_dict["나이"]
name_dict # {'이름': 'beady', '성': 'Lee'}

# 딕셔너리 키 or 값 목록 조회
name_dict.keys() # dict_keys(['이름', '성'])
name_dict.values() # dict_values(['beady', 'Lee'])

 

 

4. 셋 - 요소들의 집합을 나타내는 자료형 / 순서가 없고, 중복허용도 불가

# 셋 생성
number_set = {1, 1, 2, 3, 4, 5, 6, 6} # 중복 요소는 하나로 처리
number_set # {1, 2, 3, 4, 5, 6}

# 셋 요소 추가 및 제거
number_set.add(7) # {1, 2, 3, 4, 5, 6, 7}
number_set.remove(3) # {1, 2, 4, 5, 6, 7}

# 집합 연산을 위한 셋2 생성
number_set_2 = {3, 6, 7, 8}

# 합집합 구하기
number_set.union(number_set_2) # {1, 2, 3, 4, 5, 6, 7, 8}

# 교집합 구하기
number_set.intersection(number_set_2) # {6, 7}

 

 

 

 

 

데이터 타입을 변환하는 방법

 

1. 명시적 타입 변환 - 직접 타입 변환 함수를 사용해 데이터를 변환

 

1-1) int() 함수 예시

float_sample = 3.14 # 실수형 데이터
string_sample = "100" # 문자형 데이터

# 실수를 정수로 변환
int(float_sample) # 3
int(3.14) # 3

# 문자열을 정수로 변환
int(string_sample) # 100 (문자형 데이터지만 파이썬이 적절하게 변환시켜 출력)

# 변환 불가 예시
int("a3") # error
int("3.14") # error

 

 

1-2) float() 함수 예시

int_sample = 10 # 정수형 데이터
string_sample = "3.14" # 문자형 데이터

# 정수를 실수로 변환
float(int_sample) # 10.0

# 문자열을 실수로 변환
float(string_sample) # 3.14

# 문자열에 실수형이 포함되지만 정수값만 출력하고 싶을 때 -> 결합해서 사용
int(float(string_sample)) # 3

 

 

1-3) str() 함수 예시

int_sample = 10 # 정수형 데이터
string_sample = 3.14 # 실수형 데이터

# 정수를 문자열로 변환
str(int_sample) # '10'

# 실수를 문자열로 변환
str(string_sample) # '3.14'

 

 

1-4) bool() 함수 예시

bool_test_1 = 0
bool_test_2 = 1
bool_test_3 = ""
bool_test_4 = "Hey"

# 숫자를 불리언으로 변환
bool(bool_test_1) # False
bool(bool_test_2) # True

# 문자열을 불리언으로 변환
bool(bool_test_3) # False (빈 문자열은 False)
bool(bool_test_4) # True (그 외 값 True)

 

 

1-5) list() / tuple() / set() 함수로 컬렉션 타입 변환 예시

# 1. 스트링을 리스트로 변환
a = "beady"
list(a) # ['b', 'e', 'a', 'd', 'y']
b = list(a)
b[0] = "k" # 리스트로 변환 후 각 자리의 값 대체 가능
b # ['k', 'e', 'a', 'd', 'y']

# 2. 리스트를 스트링으로 변환
c = str(b)
c # "['k', 'e', 'a', 'd', 'y']"
# 변환은 가능하지만, 값에 괄호 및 따옴표, 쉼표가 포함되므로 주의가 필요
c[0] # '['
c[1] # "'"
c[2] # 'k'
c[3] # "'"
c[4] # ','

# 2. 리스트를 튜플로 변환
d = [3, 4, 5, 6, 7, 7]
tuple(d) # (3, 4, 5, 6, 7, 7)

# 3. 리스트를 셋으로 변환(중복 제거)
set(d) # {3, 4, 5, 6, 7}

 

 

 

2. 암시적 타입 변환 - 파이썬이 자동으로 데이터를 변환

# 정수와 실수의 연산 시 발생하는 암시적 변환
a = 3.14
b = 10
a + b # 13.14 (정수 10을 실수 10.00으로 암시적 변환)
type(13.14) # float

 

※ 타입 변환 시 주의사항

# 1. 문자열 -> 숫자열 변환 시 숫자 형태의 문자열만 가능
a = "100"
int(a) # 100

b = "beady"
int(b) # error


# 2. 실수 -> 정수 변환 시 소수점 이하 값 손실 (정밀도 손실 주의)
a = 3.14
int(a) # 3