파이썬 다차원 배열 복사 시 주의사항
다차원 배열의 얕은 복사 >>> a = [[1,2],[3,4]] >>> b = a[:] >>> a [[1, 2], [3, 4]] >>> b [[1, 2], [3, 4]] >>> a[1][1] = 9 >>> a [[1, 2], [3, 9]] >>> b [[1, 2], [3, 9]] 위 케이스처럼 배열을 복사하면 얕은 복사가 일어난다. 문제는 리스트안에 mutable한 변수(List와 Dict같은)이 있으면 주소값이 복사되어버린다! 그래서 코드 후반부 처럼 값을 변경하면 다른값도 전부 변경되어 버린다. a = b[:] a = b.copy() 전부 얕은복사이다. Mutable 데이터 타입 사용자 정의 객체 list dictionary set Immutable 데이터 타입 int float decimal boo..
2022. 12. 15.
파이썬 순열/조합 permutation, combination 사용하기
from itertools import permutations, combinations a = [1,2,3,4,5] list(permutations(a,2)) 결과 : [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] list(combinations(a,3)) 결과 : [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)] 고등학교때 nPr nCr 을 기억하고 있을 것이다. n개에서 r개를 선택하여 나열하는 경우의수 n개에서 r개를 선택하는 경우의 수 permutations과 combinations는 위 두개를 계산해주는 함수이다. permitations(인..
2021. 4. 15.
파이썬 이중 리스트 순회하며 특정요소 꺼내기
문제풀다가 이중리스트에서 요소꺼내는데 꿀팁 발견해서 적어봄 >>> mylist = [["물고기", "붕어"], ["식물","장미"], ["포유류", "소"], ["고기", "소고기"]] >>> list1 = [key for key, value in mylist] # 첫번째 요소 꺼내옴 >>> list2 = [x[1] for x in mylist] # 두번째 요소 꺼내옴 >>> list1 ['물고기', '식물', '포유류', '고기'] >>> list2 ['붕어', '장미', '소', '소고기']
2021. 3. 17.