[python] 자료형 - 리스트(list), 튜플(tuple), 세트(set), 딕셔너리(dict)

자료형 종류

자료형 표기법 순서 수정 중복 활용 포인트
리스트(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)]