Python

[Python / 기초] 파이썬 자료구조 - List, Tuple, Range, Set, Dictionary

씨주 2024. 1. 12. 08:00

📍 Sequence 자료구조

: 데이터가 나열된 자료구조

 

✅ List

  • 선언 : 변수이름 = [value1, value2, value3]
  • 접근 : 변수이름[index]
location = ['서울', '대전', '부산']
print(location) # ['서울', '대전', '부산']
print(type(location)) # <class 'list'>
print(location[1]) # 대전
print(location[-1]) # 부산 (맨 오른쪽에서 1번째)
# 찾을 수 없는 정보
print(location[3]) 
print(location[-4])
더보기
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[3], line 1
----> 1 print(location[3]) # 찾을 수 없는 정보
      2 print(location[-4])

IndexError: list index out of range
# 수정 가능
location[2] = '제주'
print(location) # ['서울', '대전', '제주']

 

✅ Tuple

  • 선언 : 변수이름 = (value1, value2, value3)
  • 접근 : 변수이름[index]
  • List와 유사하지만 수정불가능(immutable)
t = (1, 2, 3)
print(t) # (1, 2, 3)
print(type(t)) # <class 'tuple'>
# 수정 불가능
t[2] = 100
더보기
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[6], line 2
      1 # 수정 불가능
----> 2 t[2] = 100

TypeError: 'tuple' object does not support item assignment
result = divmod(9, 4)
print(type(result)) # <class 'tuple'>
print(result[0]) # 2
print(result[1]) # 1

 

✅ Range

  • range(n) : 0부터 n-1까지 범위
  • range(n, m) : n부터 m-1까지 범위
  • range(n, m, s) : n부터 m-1까지 범위, +s만큼 증가하는 범위
# 0 이상 5 미만
r = range(5)
print(list(r)) # [0, 1, 2, 3, 4]
print(type(r)) # <class 'range'>
# 5이상 15미만
r = range(5, 15)
print(list(r)) # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

# 5이상 15미만 2씩 증가
r = range(5, 15, 2)
print(list(r)) # [5, 7, 9, 11, 13]

 

✅ 시퀀스 연산 / 함수

my_list = [1, 2, 3, 4, 5]
my_tuple = (11, 22, 33, 44, 55)
my_range = range(1, 10, 2)
my_string = '일이삼사오'

✔️ Indexing

print(my_list[1]) # 2
print(my_tuple[1]) # 22
print(my_range[1]) # 3
print(my_string[1]) # 이

✔️ Slicing

# 1번째 이상 3번째 미만
print(my_list[1:3]) # [2, 3]
print(my_tuple[1:3]) # (22, 33)
print(my_range[1:3]) # range(3, 7, 2)
print(my_string[1:3]) # 이삼
# 1번째 이상 4번째 미만 2칸씩
print(my_list[1:4:2]) # [2, 1]
print(my_range[1:4:2]) # range(3, 9, 4)
# 처음부터 3번째 미만
print(my_list[ :3]) # [1, 2, 3]

# 3번째 이상 끝까지
print(my_list[3: ]) # [4, 5]

✔️ In

print(1 in my_list) # True
print(11 in my_tuple) # True
print(2 in my_range) # False
print('일' in my_string) # True

✔️ Not In

print(11 not in my_list) # True
print(100 not in my_tuple) # True
print(1 not in my_range) # False
print('구' not in my_string) # True

✔️ Concatenation

print(my_list + [1, 2, 3, 4, 5]) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(my_tuple + (1, 2, 3)) # (11, 22, 33, 44, 55, 1, 2, 3)

✔️ *

print(my_string * 3) # 일이삼사오일이삼사오일이삼사오
print(my_list * 3) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

print([0] * 10) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print([[0] * 10] * 10) 
# [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

✔️ 기타

print(len(my_list)) # 5
print(min(my_tuple)) # 11
print(max(my_range)) # 9
# string은 불가
print(max(my_string)) # 일
# 1이 몇 개인지 출력
print(my_list.count(1)) # 1

 

📍 Sequence 가 아닌 자료구조

 

✅ Set

: 중복된 값이 없음

  • 선언 : 변수이름 = {value1, value2, value3}
my_set_a = {1, 2, 3, 4, 5}
my_set_b = {1, 3, 5, 7, 9}

# 차집합
print(my_set_a - my_set_b) # {2, 4}
# 합집합 (or)
print(my_set_a | my_set_b) # {1, 2, 3, 4, 5, 7, 9}
# 교집합 (and)
print(my_set_a & my_set_b) # {1, 3, 5}
my_list = [1, 2, 3, 1, 4, 1, 2, 3, 5, 6, 7, 8, 9, 2, 2]
# 중복값 제거
print(set(my_list)) # {1, 2, 3, 4, 5, 6, 7, 8, 9}

 

✅ Dictionary

: 중복된 값이 없음

  • 선언 : 변수이름 = {key1: value1, key2: value2, key3: value3}
  • 접근 : 변수이름[key]
  • dictionary는 key와 value가 쌍으로 이루어져있다.
  • key에는 immutable한 모든 값 사용가능 (불변값 : string, integer...)
  • value에는 모든 데이터 가능 (list, dict도 가능)
my_dict = {'서울': '02', '경기': '031'}
my_dict['서울'] # '02'
dict_a = {
        'name': 'heeju',
        'age': 10,
        'location': 'busan',
        'numbers': [1, 2, 3, 4, 5],
        'freinds': {
            'a': 10,
            'b': 11,
            },
        }

print(dict_a['age']) # 10
print(dict_a['numbers']) # [1, 2, 3, 4, 5]
print(dict_a['numbers'][3]) # 4
print(dict_a['freinds']['b']) # 11
dict_a.keys() # dict_keys(['name', 'age', 'location', 'numbers', 'freinds'])
dict_a.values() # dict_values(['heeju', 10, 'busan', [1, 2, 3, 4, 5], {'a': 10, 'b': 11}])