자료형 종류
| 자료형 | 표기법 | 순서 | 수정 | 중복 | 활용 포인트 |
| 리스트(list) | [1, 2, 3, 4] | O | O | O | 순서가 중요하고 값 변경 가능할 때 |
| 튜플(tuple) | (1, 2, 3, 4) | O | X | O | 값이 변하지 않아야 할 때, 함수 반환값 |
| 세트(set) | {1, 2, 3, 4} | X | O | X | 중복 제거, 집합 연산 |
| 딕셔너리(dict) | {”key” : “value”, “이름” : “홍길동”} | O | O | 키 X / 값 O | 키-값으로 연관된 데이터 관리, 빠른 조회 |
리스트(list)
대괄호 [] 안에 요소들을 콤마(,) 로 구분해 넣습니다.
numbers = [1, 2, 3, 4, 5]
words = ['apple', 'banana', 'cherry']
mixed = [1, 'hello', True, [10, 20]]
- 순서가 있음 (Ordered) → 인덱스로 접근 가능
- 수정 가능 (Mutable) → 값 변경, 추가, 삭제 가능
- 다양한 자료형 저장 가능 → 숫자, 문자열, 불, 리스트 등
- 빈 리스트 생성 가능 → [] 또는 list()
🔹 list[0] - 접근과 수정
numbers = [1, 2, 3, 4, 5]
numbers[0] # 첫 번째 요소 → 1
numbers[1] # 두 번째 요소 → 2
numbers[-1] # 마지막 요소 → 5
numbers[-2] # 뒤에서 두 번째 요소 → 4
- 리스트는 인덱스(index) 로 각 요소에 접근할 수 있음.
- 인덱스는 0부터 시작하며, 음수 인덱스를 사용하면 뒤에서부터 접근 가능.
numbers[-1] = 10 # 마지막 요소를 10으로 변경
print(numbers) # [1, 2, 3, 4, 10]
- 인덱스를 이용해 특정 위치의 값을 변경할 수도 있음.
🔹 list[0:3] - 슬라이싱(Slicing)
- 형식:리스트[i_start:i_end:i_step] → i_step 간격으로 요소 추출
- 리스트[i_start:i_end] → i_start부터 i_end-1까지 가져옴
- i_start 생략 → 처음부터
- i_end 생략 → 끝까지
list_data = [0,1,2,3,4,5,6,7,8,9]
print(list_data[0:3]) # [0,1,2]
print(list_data[4:8]) # [4,5,6,7]
print(list_data[:3]) # [0,1,2]
print(list_data[7:]) # [7,8,9]
print(list_data[::2]) # [0,2,4,6,8]
🔹 del list[0] - 항목 삭제
del 리스트[i] → 인덱스 i의 항목 삭제
del list_data[6]
🔹 5 in list - 항목 존재 여부 확인
값 in 리스트 → 존재하면 True, 없으면 False
list_data1 = [1,2,3,4,5]
print(5 in list_data1) # True
print(6 in list_data1) # False
🔹 주요 메서드
메서드 설명 예시
| append(x) | 리스트 끝에 항목 추가 | myFriends.append('Thomas') |
| extend(iterable) | 여러 항목을 한 번에 추가 | myFriends.extend(['Laura','Betty']) |
| insert(i, x) | 인덱스 i에 항목 삽입 | myFriends.insert(1, 'Paul') |
🔹pop() - 꺼내고 삭제
리스트에서 원소를 꺼내면서 동시에 삭제하고 싶을 때 사용하는 함수이다.
기본적으로 마지막 원소를 제거하며, 인덱스를 지정할 수도 있다.
# pop()
# 리스트에서 원소를 꺼내면서 삭제
numbers = [10, 20, 30]
last = numbers.pop()
print(last) # 30
print(numbers) # [10, 20]
# 인덱스 지정
numbers.pop(0)
print(numbers) # [20]
🔹extend() - 여러 항목 추가
리스트에 다른 리스트의 원소들을 하나씩 추가하고 싶을 때 사용하는 함수이다.
리스트를 그대로 넣는 것이 아니라 원소 단위로 확장한다.
# extend()
# 다른 리스트의 원소들을 하나씩 추가
a = [1, 2, 3]
b = [4, 5]
a.extend(b)
print(a) # [1, 2, 3, 4, 5]
🔹count() - 특정 값이 몇 개 들어있는지 세기
리스트 안에 특정 값이 몇 개 들어있는지 세고 싶을 때 사용하는 함수이다.
# count()
# 특정 값이 몇 개 있는지 세기
nums = [1, 2, 3, 2, 2, 4]
cnt = nums.count(2)
print(cnt) # 3
🎯 2. 튜플(tuple)
리스트와 유사하지만 수정 불가능(Immutable) 한 자료형.
- 생성: tuple1 = (1,2,3) 또는 tuple2 = 5,6,7,8
- 요소가 하나일 때는 반드시 쉼표(,) 필요 → (9,), 10,
- 인덱스로 접근 가능하지만 값 변경·삭제 불가
tuple5 = (1,2,3,4)
tuple5[1] = 5 # 오류 발생
- 주요 메서드
- index(x) → x의 첫 번째 위치 반환
- count(x) → x의 개수 반환
🔸 3. 세트(set)
순서가 없고, 중복 불가한 집합 자료형.
- 생성: {1,2,3}
- 중복 데이터는 자동 제거됨
set1a = {1,2,3,3} # {1,2,3}
🔹 집합 연산
연산 메서드 연산자 설명
| 교집합 | A.intersection(B) | A & B | 두 집합에 모두 존재 |
| 합집합 | A.union(B) | `A | B` |
| 차집합 | A.difference(B) | A - B | A에만 존재 |
🔁 4. 자료형 간 변환
list(), tuple(), set()을 이용해 상호 변환 가능.
a = [1,2,3,4,5]
b = tuple(a) # 리스트 → 튜플
c = set(a) # 리스트 → 세트
list(b) # 튜플 → 리스트
list(c) # 세트 → 리스트
딕셔너리(dict)
중괄호 {} 안에 키(key)와 값(value) 쌍을 콜론 :으로 구분해 넣습니다. 각 쌍은 콤마(,) 로 구분합니다.
# 간단한 딕셔너리
country = {
"영국": "런던", # key: 문자열(str), value: 문자열(str)
"프랑스": "파리" # key: 문자열(str), value: 문자열(str)
}
# 다양한 타입을 가진 딕셔너리
mixed_dict = {
1: 10, # key: 정수(int), value: 정수(int)
'dict_num': {1:10, 2:20}, # key: 문자열(str), value: 딕셔너리(dict)
"dict_list_tuple": {
"A": [11,12,13], # key: 문자열(str), value: 리스트(list)
"B": (21,22,23) # key: 문자열(str), value: 튜플(tuple)
},
"dict_string": "이것은 책입니다." # key: 문자열(str), value: 문자열(str)
}
- 딕셔너리는 사전과 비슷하게 키(key)와 값(value) 쌍으로 데이터를 저장하는 자료형.
- 리스트/튜플은 인덱스를 이용하지만, 딕셔너리는 키를 이용해 값에 접근.
- 키는 숫자, 문자열 등 임의 지정 가능.
- 값은 숫자, 문자열, 리스트, 튜플, 딕셔너리 등 모든 자료형 가능.
🔹 dic[key] - 값 접근
country = {
"영국": "런던", # key: 문자열(str), value: 문자열(str)
1: "사과" # key: 문자열(str), value: 문자열(str)
}
country["영국"] #값: '런던'
country[1] #값: '사과'
- 리스트처럼 인덱스가 아닌 키(key) 로 값에 접근
- 존재하지 않는 키를 접근하면 KeyError 발생
🔹 dic[key] = value -값 추가/수정
# 새 항목 추가
country_capital["독일"] = "베를린"
# 기존 값 수정
country_capital["호주"] = "캔버라"
# update(): 다른 딕셔너리 추가
fruit_code2 = {"오렌지":106, "수박":107}
fruit_code.update(fruit_code2) # fruit_code에 병합
- 키가 없으면 추가, 키가 있으면 수정
🔹 del dic[key], dic.clear() - 값 삭제
del country_capital["덴마크"] # 특정 키와 값 삭제
# clear(): 모든 항목 삭제
fruit_code2.clear()
print(fruit_code2) # {}
- del 딕셔너리[key] → 지정한 키와 값 삭제
- 딕셔너리.clear() →딕셔너리 모든 항목 삭제
🔹 keys(), values(), items() - 딕셔너리 메서드
fruit_code = {"사과":101, "배":102, "딸기":103}
# keys(): 키만 출력
print(fruit_code.keys()) # dict_keys(['사과','배','딸기'])
print(list(fruit_code.keys())) # ['사과','배','딸기']
# values(): 값만 출력
print(fruit_code.values()) # dict_values([101,102,103])
print(list(fruit_code.values())) # [101,102,103]
# items(): 키-값 쌍 출력
print(fruit_code.items()) # dict_items([('사과',101),('배',102),('딸기',103)])
print(list(fruit_code.items())) # [('사과',101),('배',102),('딸기',103)]