Python

[2025.02.21] 자료형

polibo 2025. 2. 21. 18:30

[리스트 자료형]

  • 데이터를 나열해서 가지고 있는 모음
  • 리스트는 대괄호 ([])로 감싸져있고, 각 요소를 (,)로 구분
  • 정수, 실수, 문자열, 리스트 자체 모두 리스트 안에 포함 가능
  • 리스트도 배열의 일종임
  • 리스트도 첫번째
list_1 = [1, 2, 3] # int 자료형 3개를 담은 list
list_2 = [1.998, 0.614, 12.589, -28.6038] # float 자료형 4개를 담은 list
list_3 = ['apple', 'grape', 'orange', 'melon', 'lemon'] # 문자열 5개를 담은 list
list_4 = [list_1, list_2, list_3] # list 안에 list 3개가 있음
list_5 = [[1, 2, 3], [1.998, 0.614, 12.589, -28.6038], ['apple', 'grape', 'orange', 'melon', 'lemon']] # list_4와 같음

위 - list_4 / 아래 - list_5

 

[리스트 인덱싱]

  • 리스트도 인덱싱 가능
print(list_1[1])
print(list_1[-1]) # 음수도 가능
print(list_1[-2])
print(list_2[1:5]) # list_2의 2번째~4번째 값 출력

리스트 인덱싱 결과

 

[리스트 슬라이싱]

  • 리스트도 슬라이싱 가능
print(list_3[2]) # list_3의 3번째 문자열 출력
print(list_3[2][1]) # list_3의 3번째 문자열의 2번째 문자 출력
print(list_3[4][0]) # list_3의 5번째 문자열의 1번째 문자 출력

리스트 슬라이싱 결과

[리스트 관련 함수]

  • append 함수와 count 함수를 실행해봄
  • append 함수는 리스트 본체를 바꾼다고 함. 즉, 값을 반환하지 X
  • 그래서 list_1 = list_1.append(100) 이라고 하면 error 발생
list_1 = list_1.append(100) # None이 출력됨. 0조차 없음. 숫자/문자 어떠한 형태도 아님. 
# 문자열에서는 됐음. 하지만, list라서 안됨.
## list의 append는 본체를 바꿈 => 반환을 하지않음. 외우세요!!!!!
## print 했는데 None이 나오면 반환을 하지 않는 것임.
list_1.append(100) # list_1 맨 뒤에 100 추가
print(list_1)

list_1 = list_1.append(100) 오류 결과
list_1.append(100) 출력 결과

 

  • count 함수는 리스트 안에 해당 요소가 몇 개 있는지 알려주는 함수
  • 따라서, 본체를 바꾸지 않고, 값을 반환 => 다른 변수로 값을 받아줘야 함. (count_list_1 으로 다시 받아줌)
  • 리스트를 초기화 하는 것은 []를 사용하면 됨.
count_list_1 = list_1.count(1) # count(1)은 list_1에 1이 몇개 있는지 알려주는 것임. => 본체를 바꾸면 안됨 => 반환함 => 다른 변수로 받아줌
print(count_list_1)

list_1 = [] # list 초기화
print(list_1)

count함수 사용 결과 / 리스트 초기화

 


 

[튜플 자료형]

  • 튜플은 소괄호 (())로 감싸져 있고, 각 요소를 (,)로 구분
  • 리스트는 요솟값의 수정, 삭제, 추가 가능. But, 튜플은 불가능!!
  • 따라서, 튜플은 리스트보다 빠름!!
t_1 = (1, 2, 3)
t_2 = (1.998, 0.614, 12.589, -28.6038)
t_3 = ('apple', 'grape', 'orange', 'melon', 'lemon')
t_4 = (t_1, t_2, t_3)
t_5 = (1,) # 튜플은 1개 담으려면 뒤에 컴마 붙여야함.

t_1 ~ t_4 실행 결과

 

[튜플 인덱싱]

  • 튜플도 인덱싱 가능
print(t_1[0])
print(t_1[-1])
print(t_3[3][0])

튜플 인덱싱 결과

 

[튜플 슬라이싱]

  • 튜플도 슬라이싱 가능
print(t_2[:2])
print(t_3[0:1])

튜플 슬라이싱 결과

 

[튜플 관련 함수]

  • 앞서 튜플은 수정, 삭제, 추가가 안된다고 했음
  • 따라서, append, del 등과 같은 함수 사용이 불가능
t_1.append #=> 튜플에는 append가 없음

튜플에 append 함수를 사용했을 때 오류 발생

 


 

[딕셔너리 자료형 (dict)]

  • Key와 Value로 이루어짐.
  • 딕셔너리는 중괄호({})로 감싸져 있고, Key와 Value를 콜론(:)으로 구분하고, Key와 Value 쌍은 콤마(,)로 구분
  • 기본 형태 : {Key1: Value1, Key2: Value2, Key3: Value3, }
  • Key값은 숫자, 
  • 딕셔너리는 요소 추가, 수정, 삭제 가능
  • Key값은 알고있다고 가정
dict_1 = {"안녕": "이것은 인사입니다.", "잘가": "이것은 헤어질 때 인사입니다."} # {Key: Value, Key: Value, ...}
print(dict_1["안녕"])
dict_2 = {112: "이것은 경찰서 번호입니다.", 119: "이것은 소방서 번호입니다.", 1541: "이것은 콜렉트콜 번호입니다"}
print(dict_2[1541])

딕셔너리 출력 결과

 

  • 딕셔너리 요솟값 뽑아서 출력
print(dict_1["안녕"][1]) # dict_1의 안녕이라는 value의 2번째 문자 출력

new_dict = {"Test": ["안녕", "하이", "구텐탁", "곤니찌와"]}
print(new_dict["Test"][2][1]) # 텐 출력하기

 

[집합 자료형 (set)]

  • 집합은 중복을 허용하지 X
  • 순서가 없음 
  • 따라서, 인덱싱을 할 수 X
set_1 = {1, 1, 1}
print(set_1)
set_2 = {1, 2, 3, 4, 5}
print(set_2)

 

set_2 = {1, 2, 3, 4, 5}
# print(set_2)
print(set_2[1]) # set은 순서가 존재하지X => 인덱싱을 할 수 X

집합 인덱싱 오류 발생

 

[불 자료형 (bool)]

  • True : 참
  • False : 거짓