미식가의 개발 일기

[파이썬] 내장 데이터 타입(리스트, 딕셔너리, 튜플, 집합) 본문

Python

[파이썬] 내장 데이터 타입(리스트, 딕셔너리, 튜플, 집합)

대체불가 핫걸 2024. 7. 11. 17:58

 

리스트(List) 

수정 O, 순서 O, 중복 O
  • 선언
a = list()
a = []
  • 추가
# 맨 뒤에 아이템 추가
list_name.append(a)

# 특정 위치에 아이템 추가
list_name.insert(3, 5) -> 3번째 인덱스에 5를 삽입

# 리스트 안에 리스트를 요소로 풀어서 추가하기
l = [1, 2, 3]
ans = []
ans.append(1)
ans.append(*l)

print(ans) -> [1, 1, 2, 3]
  • 삭제
a = [10, 20, 30]

#인덱스로 삭제
del a[0]
#값으로 삭제
a.remove(10)
#리턴 후 삭제
a.pop(0)
  • 슬라이싱 -> list[start:stop:step] 형식
my_list = [0, 1, 2, 3, 4, 5]

# 기본 슬라이싱
print(my_list[2:5])   # [2, 3, 4] (인덱스 2부터 4까지)
print(my_list[:3])    # [0, 1, 2] (처음부터 인덱스 2까지)
print(my_list[3:])    # [3, 4, 5] (인덱스 3부터 끝까지)

# 음수 인덱스를 사용한 슬라이싱
print(my_list[:-2])   # [0, 1, 2, 3] (처음부터 끝에서 두 번째 요소까지)
print(my_list[-3:])   # [3, 4, 5] (끝에서 세 번째 요소부터 끝까지)

# 간격을 사용한 슬라이싱
print(my_list[::2])   # [0, 2, 4] (처음부터 끝까지 2칸씩 건너뛰며)
print(my_list[1::2])  # [1, 3, 5] (인덱스 1부터 끝까지 2칸씩 건너뛰며)

# 리스트 뒤집기
print(my_list[::-1])  # [5, 4, 3, 2, 1, 0] (역순으로 모든 요소 반환)

 

딕셔너리(Dictionary) 

수정 O, 순서 O, key는 중복 X, value는 중복 O
  • 선언
a = dict()
a = {}
  • key로 value 찾기
print(dic[key])
  • value로 key 찾기
print([k for k, v in dic if value=v])

-> 하지만 이렇게 조회할 시 시간 복잡도가 증가할 수 있음 그럴 땐 역방향으로 조회할 수 있도록 key, value값을 교차하여 딕셔너리 하나 더 생성

dic['a'] = b
dic['b'] = a

-> 이렇게 양방향으로 선언하면 key, value값 모두 편하게 조회 가능

  • 추가
a['key_name'] = 'value_name'
  • 연산
d['a'] = 1
d['a'] += 1 -> {'a': 2}
  • 키, 값 조회
for k, v in a.items():
	print(k, v)
  • 삭제
a.pop('key_name')
del a['key_name']
  • 빈도수 계산 -> Counter
from collections import Counter

a = [1, 2, 3, 4, 5, 5, 5, 6, 6]
b = Counter(a)
b -> Counter({5: 3, 6: 2, 1: 1, 2: 1, 3: 1, 4: 1})

#가장 높은 빈도수를 가지는 요소 
c = b.most_common(2) -> 2개 출력
c -> [(5, 3), (6, 2)]

 

튜플 (Tuple) 

수정 X, 순서 O, 중복 O
  • 선언
t = tuple()
t = ()

→ 수정이 안되는 특정 때문에 요소를 변경하려면 리스트로 변환한 후 변경하고 다시 튜플로 변경 해야함

집합(Set) 

수정 O, 순서 X, 중복 X
  • 선언, 추가, 제거
s = {1, 2, 3}
추가(싱글 요소) - add
추가(열거형 자료) - update
제거(싱글 요소) - remove : 제거 대상 없으면 에러 발생
		discard : 제거 대상 없어도 에러 발생X
  • 특정 요소 포함 여부 -> in 연산이 매우 빠르다 → O(1)
s = {1, 2, 3}
if 1 in s:
	print(True)
  • 특정 요소 포함 여부 ->  any
vset = {1, 2, 3, 3} -> {1, 2, 3}
ex = {3, 4, 5}
# vset에 ex에 있는 값 하나라도 있으면 True
if any(vset and ex):
	print(True)
반응형

'Python' 카테고리의 다른 글

[파이썬] 문자열 조작  (0) 2024.07.11
[파이썬] itertools 순열과 조합  (0) 2024.07.11
[파이썬] collections -> Queue, Counter, defaultdict  (0) 2024.07.11
[파이썬] 람다 함수  (0) 2024.07.11
[파이썬] 리스트 컴프리헨션  (0) 2024.07.11