파이썬(Python)은 int, float, complex, str, bool과 같은 단순 내장 타입을 기본으로 제공합니다. 여기에 더해 리스트(List), 딕셔너리(Dict), 튜플(Tuple), 세트(Set)와 같은 복합 자료형도 함께 제공하여 다양한 데이터를 효율적으로 다룰 수 있습니다.
리스트(List)
리스트는 파이썬에서 가장 많이 사용되는 자료형 중 하나로, 여러 객체를 모아 놓은 순서가 있고(ordered) 변경 가능한(mutable) 컬렉션입니다. 대괄호 []를 사용하여 작성합니다.
리스트 생성 방법
my_list = ["car", "bus", "truck"] print(my_list)
리스트 항목 접근 방법
인덱스 번호를 참조하여 리스트 항목에 접근할 수 있습니다. 아래 예제는 인덱스 1(두 번째) 위치의 항목을 반환합니다.
my_list = ["car", "bus", "truck"] print(my_list[1]) # bus 출력
리스트 값 변경 방법
인덱스 번호를 사용하면 특정 항목의 값을 변경할 수 있습니다.
my_list = ["car", "bus", "truck"] my_list[2] = "van" # 리스트는 변경 가능(mutable) print(my_list)
리스트 반복문 처리
for 루프를 사용하여 리스트의 각 항목을 순회할 수 있습니다.
my_list = ["car", "bus", "truck"]
for x in my_list:
print(x)
리스트 메서드
파이썬은 리스트에 바로 사용할 수 있는 다양한 내장 메서드를 제공합니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | append() 리스트 끝에 요소를 추가합니다. |
| 2 | clear() 리스트의 모든 요소를 제거합니다. |
| 3 | copy() 리스트의 복사본을 반환합니다. |
| 4 | count() 지정된 값을 가진 요소의 개수를 반환합니다. |
| 5 | extend() 다른 리스트(또는 반복 가능한 객체)의 요소들을 현재 리스트 끝에 추가합니다. |
| 6 | index() 지정된 값을 가진 첫 번째 요소의 인덱스를 반환합니다. |
| 7 | insert() 지정된 위치에 요소를 삽입합니다. |
| 8 | pop() 지정된 위치의 요소를 제거하고 반환합니다. |
| 9 | remove() 지정된 값을 가진 항목을 제거합니다. |
| 10 | reverse() 리스트의 순서를 뒤집습니다. |
| 11 | sort() 리스트를 오름차순으로 정렬합니다. |
딕셔너리(Dict)
딕셔너리는 키(key)와 값(value) 쌍으로 데이터를 저장하는 추상 자료형입니다. 리스트와 달리 위치(인덱스)가 아닌 키를 기준으로 데이터에 접근하며, 모든 키는 고유한 값과 연결됩니다. 이러한 구조 때문에 딕셔너리는 연관 배열(Associative Array)이라고도 불립니다.
예제
>>> student = {"Aadrika": 1, "Adwaita": 9, "Sakya": 11, "Sanj": 22}
학생 기록을 저장할 때 학생 이름을 인덱스처럼 활용할 수 있습니다.
>>> student["Adwaita"] 9
위 예제에서 딕셔너리 이름은 student이며, 첫 번째 요소가 "Aadrika", 두 번째 요소가 "Adwaita"처럼 보일 수 있지만, 딕셔너리는 인덱스 순서가 아니라 키를 통해 접근한다는 점이 리스트와 다릅니다.
요소 추가하기
>>> student["Krishna"] = 111
>>> student
{'Aadrika': 1, 'Adwaita': 9, 'Sakya': 11, 'Sanj': 22, 'Krishna': 111}
이처럼 빈 딕셔너리에서 시작해 하나씩 값을 추가하는 방식으로 데이터를 쌓아갈 수 있습니다.
튜플(Tuple)
튜플은 쉼표(,)로 구분된 객체들의 집합입니다. 인덱싱 방식은 리스트와 유사하지만, 가장 큰 차이점은 변경 불가능(immutable)하다는 것입니다. 또한 튜플은 비교와 해싱이 가능하기 때문에 정렬이 쉽고, 딕셔너리의 키로도 사용할 수 있습니다.
튜플 생성 방법
my_tuple = ("car", "bus", "truck")
print(my_tuple)
튜플 항목 접근 방법
인덱스 번호를 참조하여 튜플 항목에 접근할 수 있습니다. 아래 예제는 인덱스 1 위치의 항목을 반환합니다.
my_tuple = ("car", "bus", "truck")
print(my_tuple[1]) # bus 출력
튜플 값 변경 방법
튜플은 한 번 생성되면 값을 변경할 수 없습니다. 즉, 튜플은 불변(immutable)입니다.
my_tuple = ("car", "bus", "truck")
my_tuple[3] = "van"
# TypeError 발생: 튜플은 값을 변경할 수 없음
튜플 반복문 처리
for 루프를 사용하여 튜플의 각 항목을 순회할 수 있습니다.
my_tuple = ("car", "bus", "truck")
for x in my_tuple:
print(x)
튜플 메서드
파이썬은 튜플에 사용할 수 있는 두 가지 내장 메서드 count()와 index()를 제공합니다.
| count() | 튜플에서 지정된 값이 나타나는 횟수를 반환합니다. |
| index() | 튜플에서 지정된 값을 검색하여 해당 위치(인덱스)를 반환합니다. |
세트(Set)
수학에서 집합(set)은 서로 구별되는 객체들의 모임입니다. 예를 들어 2, 4, 6이라는 세 개의 숫자는 개별적으로는 서로 다른 객체이지만, 함께 묶어 생각하면 크기가 3인 하나의 집합 {2, 4, 6}을 이룹니다.
파이썬에서 세트는 매우 유용합니다. 특정 요소가 세트에 존재하는지 여부를 매우 빠르게 확인할 수 있도록 최적화되어 있기 때문입니다.
세트 연산 메서드
1. add(x) 메서드: 해당 요소가 세트에 없으면 추가합니다.
A = {"AA", "BB", "CC"}
A.add("DD") # A 세트에 DD 추가
2. union(s) 메서드: 두 세트의 합집합을 반환합니다. '|' 연산자를 사용할 수도 있습니다.
A = {"AA", "BB", "CC"}
B = {"MM", "NN"}
Z = A.union(B)
# 또는
Z = A | B
# Z에는 A와 B의 모든 요소가 포함됨
3. intersection(s) 메서드: 두 세트의 교집합을 반환합니다. '&' 연산자도 사용할 수 있습니다.
S = A.intersection(B) # S에는 A와 B의 공통 요소가 포함됨
4. difference(s) 메서드: 첫 번째 세트에는 속하지만 두 번째 세트에는 속하지 않는 요소들의 집합을 반환합니다. '-' 연산자를 사용할 수 있습니다.
S = A.difference(B) # 또는 S = A - B # S에는 A에는 있고 B에는 없는 모든 요소가 포함됨
5. clear() 메서드: 세트 전체를 비웁니다.
B.clear() # B 세트 비우기
세트 연산자
세트와 프로즌세트(frozenset)는 다음 연산자를 지원합니다.
| key in s | # 포함 여부 검사 |
| key not in s | # 미포함 여부 검사 |
| s1 == s2 | # 두 세트가 같음 |
| s1 != s2 | # 두 세트가 같지 않음 |
| s1 <= s2 | # s1이 s2의 부분집합 |
| s1 < s2 | # s1이 s2의 진부분집합 |
| s1 >= s2 | # s1이 s2의 상위집합(슈퍼셋) |
| s1 > s2 | # s1이 s2의 진상위집합 |
| s1 | s2 | # 두 세트의 합집합 |
| s1 & s2 | # 두 세트의 교집합 |
| s1 - s2 | # 첫 번째 세트에는 있고 두 번째 세트에는 없는 요소들의 집합 |
| s1 ^ s2 | # 두 세트 중 정확히 하나에만 속하는 요소들의 집합(대칭 차집합) |