[Python] Deep copy & shallow copy
Deep copy & shallow copy mutable container인 list, set, dictionary 를 immutable 한 클래스를 만들기 위한 방법 Shallow copy b = a a와 b가 동일한 메모리 주소를 가짐 내부의 객체 또한 동일한 메모리 주소 # shallow copy a = [0, 1, [10, 20]] **b = a # 첫 번째 방법** b[0] = 'hello' b[-1][0] *= -1 print(a, b) # a = ['hello', 1, [-10, 20]], b = ['hello', 1, [-10, 20]] print(id(a), id(b)) # 동일한 아이디 값 print(id(a[2]), id(b[2])) # 내부의 리스트를 아이디 값이 같다 b = a[..
2023. 4. 11.
[Python] Dictionary
Dictionary key와 value 값을 가지는 자료형 {key1: value1, key2: value2, key3: value3, …} 특징 value 값은 key 에 의해 인덱싱된다. 순서가 존재하지 않는다. 기본 형태 d = {'a': 1, 'b': 2, 'c': 3} # value 값 접근 d['a'] # 1 # value 값 수정 d['a'] = 10 # {'a': 10, 'b': 2, 'c': 3} # 원소 추가 d['d'] = 4 # {'a': 10, 'b': 2, 'c': 3, 'd': 4} # 원소 삭제 del d['b'] # {'a': 10, 'c': 3, 'd': 4} # key 값만 탐색 list(d.keys()) # ['a', 'c', 'd'] list{d.values()) #..
2023. 4. 11.
[Python] Set
집합과 관련된 것을 쉽게 처리하기 위해 만든 자료형 set의 특징 중복을 허용하지 않는다 순서가 존재하지 않는다 ⇒ 인덱스로 원소 값에 접근할 수 없다. set 생성 # set 키워드 이용 s1 = set([1, 2, 3]) # {1, 2, 3} s2 = set("Hello") # {'e', 'H', 'l', 'o'} set 연산 집합 연산 a = set([0, 1, 2]) b = set([1, 2, 3, 4]) # union (합집합) print(a | b) # {0, 1, 2, 3, 4} print(a.union(b)) # {0, 1, 2, 3, 4} a |= b # a = {0, 1, 2, 3, 4} # intersection (교집합) print(a & b) # {1, 2} print(a.inte..
2023. 4. 11.
[Python] Tuple
Tuple 리스트와 거의 동일한 자료구조 리스트와의 차이점 튜플은 ( )로 둘러싼다. 튜플은 요소 값의 생성, 삭제, 수정이 불가능하다. 기본 형태 t1 = () t2 = (1,) # 원소가 한 개뿐이어도 콤마 붙여줘야함 t3 = (1, 2, 3) t4 = 1, 2, 3 # 괄호 생략 가능 t5 = (1, 2, 3), 1, 2, 3 t5 = (1, 2, (3, 4)) 내장 메소드 t = 1, 1, 3, 2, 5, 3, 4, 1, 2 print(x.count(1)) # 3 print(x.index(3)) # 2 원소 교환 튜플을 이용하여 두 값을 간단하게 교환할 수 있다. # first temp = a a = b b = temp # second a, b = b, a
2023. 4. 11.
[Python] List
List 아이템의 순서를 포함하는 자료구조 [10, 20, 30, 40], [”hello”, 2.0, 5, [10, 20]] ⇒ 자료형이 달라도 됨 인덱스(위치를 나타냄)를 사용하여 리스트 값에 접근할 수 있다. 리스트 생성 리스트명 = [요소1, 요소2, …] 리스트명 = list() 원소 접근 리스트명[인덱스] ⇒ 해당 인덱스의 원소값 반환 # 이중 리스트 a = [1, 2, 3, ['a', 'b', 'c']] a[0] # 1 a[-1] # ['a', 'b', 'c'] a[-1][0] # 'a' 리스트 슬라이싱 리스트명[start : end + 1 : step] start 번째 인덱스부터 end 번째 인덱스까지 step 만큼 건너뛰며 리스트 슬라이싱 a = [1, 2, 3, 4, 5] print(a[..
2023. 4. 11.
[Python] 2차원 리스트 정렬
1차원 리스트 # 1차원 리스트 정렬 List = [3, 4, 5, 2, 1] # 오름차순 정렬 List.sort() # [1, 2, 3, 4, 5] # 내림차순 정렬 List.sort(reverse=True) # [5, 4, 3, 2, 1] 2차원 리스트 # 2차원 리스트 정렬 List = [[3, 2], [1, 6], [5, 9]] # 행 기준 정렬 # 1. List[i][0] 값을 기준으로 오름차순 정렬 List.sort(key=lambda x:x[0]) # [[1, 6], [3, 2], [5, 9]] # 2. List[i][0] 값을 기준으로 내림차순 정렬 List.sort(key=lambda x:-x[0]) # [[5, 9], [3, 2], [1, 6]] # 열 기준 정렬 # 1. List[i]..
2023. 3. 19.