Computer Science/[20-3,4] Python Basic24 [Python] Frozenset이란? set은 mutable한 자료형이고, Frozenset은 immutable한 버전의 set이다. Frozenset은 immutable하기 때문에 딕셔너리의 키로 사용할 수 있다. ( immutable한 객체만 hash key로 사용될 수 있다.) 참고: https://jiwonkoh.tistory.com/40 [Python] immutable한 객체는 모두 hashable한가? ① Hashing은 hash table이라는 자료구조를 이용해서 요소들을 빠르게 찾을 수 있게 하는 방법이다. Hash table은 모든 요소들에 대해서 key를 가진다. 이를 통해서 요소들을 찾는데 constant time (O(1)) (= 시간.. jiwonkoh.tistory.com # frozenset은 dictionary.. 2020. 3. 26. [Python] immutable한 객체는 모두 hashable한가? ① Hashing은 hash table이라는 자료구조를 이용해서 요소들을 빠르게 찾을 수 있게 하는 방법이다. Hash table은 모든 요소들에 대해서 key를 가진다. 이 key를 통해서 요소들을 찾는데 constant time (O(1)) (= 시간 복잡도 상수 시간)을 가져 요소들의 개수와 상관 없이 원하는 값을 빠르게 찾아낼 수 있다. 그렇다면 hashable하다는 것의 의미는 무엇일까? Hashable은 객체가 만들어진 이후에 hash table의 value가 바뀌지 않음을 의미한다. ② Mutability는 이 변수가 바뀔 수 있는지 없는지에 대한 개념이다. 파이썬의 자료형에서는 Immutable type: Tuple, int, String, Frozenset mutable type: Lis.. 2020. 3. 26. [Python] set 자료형에 string을 알파벳 분리 안되게 넣기 >>> A = set('apple') >>> A # {'a', 'p', 'l', 'e'} set에 string을 추가하고 싶을 때 이렇게 넣으면 알파벳이 분리된다. >>> A = set() >>> A.add('apple') >>> A # {'apple'} 이렇게 set()으로 빈 set을 먼저 만들어주고 .add()를 이용해서 새로운 string을 추가하면 문자가 분리되지 않게 추가할 수 있다. >>> A = set() >>> A.update('apple') >>> A # {'a', 'p', 'l', 'e'} .update()를 사용하면 문자가 분리되어 들어간다. 이는 update() 메서드가 iterable한 객체는 한 캐릭터씩 set에 집어넣는 메서드이기 때문이다. update()가 iterable한.. 2020. 3. 20. [Python] output formatting에 f-string 사용하기 f-string을 이용하면 output을 print하거나 string을 만들 때 요긴하게 사용할 수 있다. name = 'Amy' age = 12 print(f'{name} is {age} years old') # Amy is 12 years old 이렇게 f'' 로 감싸고 문자열에 넣고 싶은 변수를 {}로 감싸면 된다. .format()보다 가독성이 좋다. 만약 문자열 안에 작은 따옴표를 추가하고 싶으면 f""로 쓰면 된다. name = 'Amy' print(f"'Hi! my name is {name}'") # 'Hi! my name is Amy' 2020. 3. 19. [Python] 텍스트 파일 행의 길이를 셀 때 줄바꿈 개행문자 길이는 1 def counting(filename): filename = open(filename, 'r') row, col = 0, 0 for line in filename: row += 1 col = len(line) - 1 텍스트 파일을 한줄씩 for문으로 꺼내면서 길이를 셀 때 column의 길이가 한 행의 character의 개수라고 생각하면 개행문자 \n 때문에 1이 더해진 상태기 때문에 1을 빼줘야한다. 2020. 3. 12. [Python] try~ except~ 문을 이용한 예외 처리 try except문은 예외가 일어날 가능성이 있는 절을 처리할 때 사용한다. try문의 동작 ① 먼저 try 절이 실행 ② try 절에서 예외가 발생하지 않으면 except 절을 건너뛰고 종료 ③ 예외가 발생하면 except 절을 실행 (출처:https://docs.python.org/ko/3/tutorial/errors.html) for i in givenString: try: Text += givenDict[i] except KeyError: raise ValueError('invalid character') 이런 경우에 givenDict라는 딕셔너리에 i가 존재하지 않아서 KeyError가 발생하면 ValueError를 발생시키도록 했다. raise는 프로그래머가 지정한 예외가 발생하도록 한다. .. 2020. 3. 12. [Python] 텍스트 파일 관련 자주 사용하는 명령어 정리 ① 텍스트 파일을 함수 안에서 호출하기 def callText(filename): thisfile = open(filename, 'r') 호출할 filename을 함수의 인자로 받는다고 하면, 인자의 이름을 사용해서 open()한다. open(이름 or 경로, 모드) 모드에는 읽기 ('r'), 쓰기 ('w')를 자주 사용한다. 읽기는 디폴트 값이고, 쓰기로 열면 원래 있던 내용이 삭제된다는 것에 유의한다. 이렇게 파일을 open()하고 나서 ▶ 읽기 모드로 사용하는 file 객체의 메소드는, thisfile.read(글자 수) 글자 수로 정한 만큼 반환한다. thisfile.readline() 파일을 행 별로 반환한다. thisfile.readlines() 파일의 행을 리스트의 요소로 넣는다. ② 파일 .. 2020. 3. 11. [Python] 텍스트 파일을 생성할 때 마지막 행에 \n 안쓰기 문제: 기존 파일에 있는 행의 reverse를 새로운 파일에 저장한다. 예시: original.txt abc def new.txt cda fed 문제 원인: 새로운 텍스트 파일을 작성하는데 # 예시 data = 'Hello World!\n' newFile.write(data) # 3번 반복하면 newFile의 내용이 # Hello World! # Hello World! # Hello World! # 이런 식으로 반복문을 돌리니까, 줄바꿈 개행문자 (\n) 으로 인해서 마지막 행이 비어있는 행이 나왔다. 해결: enumerate를 이용해서 마지막 행일 때는 개행문자 안쓰기 original = open("original.txt", "r") # 새로운 파일을 생성한다. newFile = open("new.tx.. 2020. 3. 11. 이전 1 2 3 다음