[Python] 3. Python의 자료구조

파이썬의 자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 방법으로 각각의 자료구조는 특정한 목적과 용도에 맞게 설계되어 있고, 데이터를 추가, 삭제, 검색, 정렬 등 작업을 최적화하는데 도움을 줍니다. 파이썬에 제공되는 주요 자료구조는 다음과 같습니다.

1. 리스트(List)

파이썬의 리스트는 순서의 있는 가변적(mutable) 자료구조로, 다양한 데이터 타입을 포함시킬 수 있습니다.

lister = [3,2, 5, 'talk', 6.2]; # 리스트를 생성
lister.append(10) # 리스트에 요소를 추가
lister.remove(2) # 리스트의 요소를 삭제
print(lister); # [3,5, 'talk', 6.2,10]
print(lister[1]) # 두 번째 요소 접근

2. 리스트 스택 사용

스택은 LIFO(LastIn, First Out)원 칙을 따르며 리스트의 append()와 pop() 메서드를 사용해 쉽게 구현할 수 있습니다.

stack = ["123", "12312", "123213"];
stack.append(1); # push
stack.append(2);
last_item = stack.pop() # pop 2 delete
print(stack);  # ['123', '12312', '123213', 1]

3.리스트를 큐로 사용하기

는 FIFO(First In, First Out) 원칙을 따르며 ,리스트의 append()와 pop(0) 메서드를 사용해 구현할 수 있으나 비효율 적이라 collections.deque를 사용하는 게 좋습니다.

from collections import deque

queue = deque()
queue.append(1) # 요소 add
queue.append(2)
first_item = queue.popleft() # 첫 번째 요소 제거 1 제거
print(queue) # deque([2])

4.리스트 컴프리핸션

리스트 컴프리핸션을 사용해 간결하게 리스트를 생성할 수 있습니다.

squares = [x**2 for x in range(20)] # 0부터 20까지의 제곱 리스트
print(squares) 
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]

 

중첩된 리스트 컴프리헨션을 사용해 2차원 리스트를 생성할 수 있습니다.

# 중첩된 리스트 컴프리헨션
matrix = [[j for j in range(5)] for i in range(3)];
print(matrix)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

5.del 문

del 문을 사용해 리스트의 요소를 삭제 또는 변수를 제거할 수 있습니다.

my_list = [1,2,3,4];

del my_list[1] # index 1 is delete

print(my_list); # [1, 3, 4]

6. 튜플과 시퀀스 

튜플은 불변(immutable)의 시퀀스로, 리스트와 유사하나 수정이 불가능합니다.

my_tuple = (1,2,3);

my_tuple[2] = 4 # error

7. 집합(Set) 

집합은 중복이 없는 가변적 자료구조며, 수학적 집합 연산을 수행할 수 있습니다.

my_set = {1,2,3,3,5} # 1,2,3,3,5 => 1,2,3,4,5
my_set.add(4)
print(my_set)

8.딕셔너리 (Dictionary)

딕셔너리는 키-값 쌍으로 데이터를 저장하는 가변적 자료구조로 딕셔너리안에 키가 중복되지 않은 제약 조건을 가진 키:값 쌍의 집합입니다.

my_diction = {'name': 'James', 'age': 34, 'job': 'backend'}
my_diction['backend'] = "fullStack" # 값 Edit
print(my_diction) # {'name': 'James', 'age': 34, 'job': 'backend', 'backend': 'fullStack'}

9. 루프 테크닉

루프 테크닉은 다양한 루프를 사용할 수 있고 가장 일반적으로 for 루프와 while 루프를 사용합니다.

my_list = [1,3,4,5,6,7]

for item in my_list:
     print(item) # list all print

i = 0
while i < len(my_list):
    print(my_list[i])
    i += 2 # += 1 = 1 3 4 5 6 7 2번 반복 += 2 = 1 3 4 5 6 7 반복하다 1 4 6까지만 출력

10. 시퀀스와 다른 형들 

  • 시퀀스: 리스트, 튜플, 문자열 등 순서가 있는 자료구조, 인덱스를 통해 접근 가능
  • 비시퀀스: 집합(set)과 딕셔너리(dictionary)는 순서가 없으며, 키를 통해 접근

 

GitHub - Koras02/python-blog

Contribute to Koras02/python-blog development by creating an account on GitHub.

github.com

 

LIST