본문 바로가기

BASIC50

제너레이터 1. 제너레이터 사용하기 제너레이터는 이터레이터를 생성해주는 함수입니다. 이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield라는 키워드만 사용하면 끝입니다. 그래서 제너레이터는 이터레이터보다 훨씬 간단하게 작성할 수 있습니다. 참고로 제너레이터는 발생자라고 부르기도 합니다. 이 책에서는 제너레이터를 사용하겠습니다. 함수 안에서 yield를 사용하면 함수는 제너레이터가 되며 yield에는 값(변수)을 지정합니다. yield 값(변수) def number_generator(): yield 0 yield 1 yield 2 for i in number_generator(): print(i) 0 1 2 1) 제너레이터 객체.. 2023. 11. 28.
이터레이터 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)입니다. 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)라고 합니다. 참고로 이터레이터는 반복자라고 부르기도 합니다. 이 책에서는 이터레이터를 사용하겠습니다. 1. 반복 가능한 객체 (iterable) 반복 가능한 객체는 말 그대로 반복할 수 있는 객체인데 우리가 흔히 사용하는 문자열, 리스트, 딕셔너리, 세트가 반복 가능한 객체입니다. 즉, 요소가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체입니다. 객체가 반복 가능한 객체인지 알아보는 방법은 객체에 __iter__ 메서드가 들어있는지 확인해보면 됩니다. dir(객체) >>> dir([1, 2, 3]) ['__add__', '_.. 2023. 11. 28.
회문 판별과 N-gram 만들기 1. 회문( palindrome ) 판별하기 회문(palindrome)은 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장을 말합니다. 예를 들면 "level", "SOS", "rotator", "nurses run"과 같은 단어와 문장이 있지요. 1) 반복문으로 문자 검사하기 이제 반복문으로 문자열의 각 문자를 검사해보겠습니다. palindrome.py word = input('단어를 입력하세요: ') is_palindrome = True # 회문 판별값을 저장할 변수, 초깃값은 True for i in range(len(word) // 2): # 0부터 문자열 길이의 절반만큼 반복 if word[i] != word[-1 - i]: # 왼쪽 문자와 오른쪽 문자를 비교하여 문자가 다르면 is_pa.. 2023. 11. 28.
파일 다루기 메서드 설명 read() 파일에서 문자열을 읽음 write('문자열') 파일에 문자열을 씀 readline() 파일의 내용을 한 줄 읽음 readlines() 파일의 내용을 한 줄씩 리스트 형태로 가져옴 writelines(문자열리스트) 파일에 리스트의 문자열을 씀, 리스트의 각 문자열에는 \n을 붙여주어야 함 pickle.load(파일객체) 파일에서 파이썬 객체를 읽음 pickle.dump(객체, 파일객체) 파이썬 객체를 파일에 저장 1. 파일에 문자열 쓰기, 읽기 이제부터 파일에 문자열을 써서 파일을 만든 뒤에 만든 파일을 읽는 순서로 진행하겠습니다. 1) 파일에 문자열 쓰기 파일객체 = open(파일이름, 파일모드) 파일객체.write('문자열') 파일객체.close() file_write_stri.. 2023. 11. 28.
set 메서드 집합 연산자 설명 set.union(세트1, 세트2) | 두 세트의 합집합 set.intersection(세트1, 세트2) & 두 세트의 교집합 set.difference(세트1, 세트2) - 두 세트의 차집합 set.symmetric_difference(세트1, 세트2) ^ 두 세트의 대칭차집합 update(다른세트) |= 현재 세트에 다른 세트를 더함 intersection_update(다른세트) &= 현재 세트와 다른 세트 중에서 겹치는 요소만 현재 세트에 저장 difference_update(다른세트) -= 현재 세트에서 다른 세트를 뺌 symmetric_difference_update(다른세트) ^= 현재 세트와 다른 세트 중에서 겹치지 않는 요소만 현재 세트에 저장 issubset(다른.. 2023. 11. 27.
딕셔너리 응용하기 메서드 설명 setdefault(키, 기본값) 딕셔너리에 키-값 쌍을 추가, 키만 지정하면 값에 None을 저장 update(키=값) 딕셔너리에서 키의 값을 수정, 딕셔너리에 키가 없으면 키-값 쌍을 추가 update(딕셔너리) update(리스트) update(튜플) update(반복가능한객체) pop(키) 딕셔너리에서 특정 키-값 쌍을 삭제한 뒤 값을 반환, del 딕셔너리[키]와 같음 pop(키, 기본값) 기본값을 지정하면 키가 없을 때 기본 값을 반환 popitem() 딕셔너리에서 임의의 키-값 쌍을 삭제하고 해당 키-값 쌍을 튜플로 반환 clear() 딕셔너리의 모든 키-값 쌍을 삭제 get(키) 딕셔너리에서 특정 키의 값을 가져옴 get(키, 기본값) 기본값을 지정하면 키가 없을 때 기본값을 .. 2023. 11. 27.
문자열 포매팅 문자열 서식 지정자와 포매팅 사용하기 1. 서식 지정자 1) 서식 지정자로 문자열 넣기 '%s' % '문자열' 서식 지정자는 %로 시작하고 자료형을 뜻하는 문자가 붙습니다. >>> 'I am %s.' % 'james' 'I am james.' >>> name = 'maria' >>> 'I am %s.' % name 'I am maria.' 2) 서식 지정자로 숫자 넣기 '%d' % 숫자 >>> 'I am %d years old.' % 20 'I am 20 years old.' 식 지정자로 소수점 표현하기 '%f' % 숫자 >>> '%f' % 2.3 '2.300000' %f는 기본적으로 소수점 이하 6자리까지 표시하므로 2.3은 2.300000으로 표시됩니다. '%.자릿수f' % 숫자 >>> '%.2f' .. 2023. 11. 25.
문자열 method 기능 명령어 예제 문자열 바꾸기 replace('바꿀문자열', '새문자열') >>> 'Hello, world!'.replace('world', 'Python') 'Hello, Python!' >>> s = 'Hello, world!' >>> s = s.replace('world!', 'Python') >>> s 'Hello, Python' 문자 바꾸기 규칙table = str.maketrans('기존문자','변경문자') 대상문자열.translate(규칙table) >>> table = str.maketrans('aeiou', '12345') >>> 'apple'.translate(table) '1ppl2' 문자열 분리하기 split() >>> 'apple pear grape pineapple orange.. 2023. 11. 25.
2차원 리스트의 할당과 복사 알아보기 2차원 리스트의 할당과 복사 알아보기 리스트를 다른 변수에 할당해도 변수 이름만 달라질 뿐 같은 리스트(객체)라고 했죠? 2차원 리스트도 마찬가지입니다. 다음과 같이 2차원 리스트를 만든 뒤 다른 변수에 할당하고, 요소를 변경해보면 두 리스트에 모두 반영됩니다. >>> a = [[10, 20], [30, 40]] >>> b = a >>> b[0][0] = 500 >>> a [[500, 20], [30, 40]] >>> b [[500, 20], [30, 40]] 그런데 리스트 a를 copy 메서드로 b에 복사한 뒤 b의 요소를 변경해보면 리스트 a와 b에 모두 반영됩니다. >>> a = [[10, 20], [30, 40]] >>> b = a.copy() >>> b[0][0] = 500 >>> a [[500.. 2023. 11. 25.