본문 바로가기

CS/python3

[python] set & frozenset 비교하기 결론 set = mutable (변경 가능) frozenset = immutable (변경 불가능) frozenset이 필요한 상황? set을 hashable object로써 사용할 때 필요하다 set의 함수 중 add, update 등은 hashable 객체만을 인자로 받는다 hashable object란? hash 함수에 인자로 사용될 수 있는 객체 immutable 하다. hash(object)란? a = "애플" hash(a) >>> -3550055125485641917 목적: 비교 기능: 입력값에 1 : 1 대응하는 정수를 생성하여 반환하는 함수 특징: 비교를 하기 위해 1번의 비교 연산만을 필요로 함 -> O(1)으로 빠름 같은 객체는 항상 같은 hash 결과값을 가짐 -> 일관성 보장 ex... 2023. 1. 27.
[python] 리스트 컴프리헨션 + 중첩 반복문 리스트 컴프리헨션? python에서 list를 생성할 때, 보다 짧게 작성하기 위한 문법 비교 # 기존 문법 data = [] for i in range(1, 10): data.append(i) # 리스트 컴프리헨션 data = [i for i in range(1, 10] print(data) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9] 중첩 반복문 # 기존 문법 data = [] for x in ["서울대", "연세대", "고려대"]: for y in ["문과", "이과", "예체능"]: for z in ["1학년", "2학년", "3학년"]: data.append((x, y, z)) # 리스트 컴프리헨션 (가장 왼쪽(x)에 있는 반복문부터 쌓음 -> 반복문이 다 쌓이면 -> 가장 오른쪽(.. 2023. 1. 26.
[python] 맨날 헷갈리는 문법 join 결론 "구분자".join(리스트) >>> "요소1 + 구분자 + 요소2 + 구분자 + 요소3 ..." 1. 구분자의 type은 str 2. join의 인자는 iterable 객체 3. return 값은 str 예시 #1 "".join(['a', 'b', 'c', 'd'] >>> "abcd" #2 "@".join(['a', 'b', 'c', 'd']) >>> "a@b@c@d" 보통 1번의 형태로 사용해서 'join 그거 리스트 문자열로 바꿔주는 거 아냐?' 라는 이상한 개념을 박혀있었다. 1번은 리스트 요소 사이마다 공백인 구분자를 넣었을 뿐이다. 2023. 1. 13.