본문 바로가기

윤성우

[윤성우의 열혈 파이썬 중급편] 12. named tuple 출처 : 윤성우의 열혈 파이썬 : 중급 12. named tuple named tuple의 이해와 작성 tri_one = (12, 15) print(tri_one) # (12, 15) from collections import namedtuple Tri = namedtuple('Triangle', ['bottom', 'height']) t = Tri(3, 7) # named tuple 객체 생성 print(t[0], t[1]) # 일반 tuple과 동일한 방법으로 접근 가능 print(t, bottom, t.height) # 이름으로도 접근 가능 t[0] = 15 # error 튜플 성격을 갖는 클래스 기본 골격은 튜플이나 일반 튜플과 달리 위치별로 이름을 갖는.. 더보기
[윤성우의 열혈 파이썬 중급편] 11. 튜플의 패킹과 언패킹 출처 : 윤성우의 열혈 파이썬 : 중급 11. 튜플의 패킹과 언패킹 튜플 패킹 : 하나 이상의 값을 튜플로 묶는 행위 튜플 언패킹 : 튜플에 묶여 있는 값들을 풀어내는 행위 tri_one = (12, 15) print(tri_one) tri_three = (12, 25) bt, ht = tri_three print(bt, ht) nums = (1, 2, 3, 4, 5) n1, n2, *others = nums # 둘 이상의 값을 리스트로 묶을 때 *를 사용 print(n1) # 1 print(n2) # 2 print(othres) # [3, 4, 5] first, *others, last = nums *others, n1, n2 = nums # 리스트를 대상으로도 동일하게 동작한다 nums = [1, 2.. 더보기
[윤성우의 열혈 파이썬 중급편] 10. generator 표현식 출처 : 윤성우의 열혈 파이썬 : 중급 10. generator 표현식 하나의 문장으로 generator를 구성하는 방법 generator 함수 & generator 표현식 generator 표현식은 generator 함수와 마찬가지로 generator 객체를 생성하는 방법이다 generator 표현식의 문법 구성이 list 컴프리헨션과 거의 같다 def show_all(s): for i in s: print(i, end = ' ') st = [2 * i for i in range(1, 10)] show_all(st) def times2(): for i in range(1, 10): yield 2 * i g = times2() show_all(g) g = (2 * i for i in ran.. 더보기
[윤성우의 열혈 파이썬 중급편] 09. generator 함수 출처 : 윤성우의 열혈 파이썬 : 중급 09. generator 함수 generator은 iterator 객체의 한 종류 generator를 만드는 두가지 방법 generator 함수(function) generator 표현식(expression) 함수 기반의 제너레이터 def gen_num(): print('first number') yield 1 print('second number') yield 2 print('third number') yield 3 gen = gen_num() # generator 객체 생성 type(gen) # next(gen) # first number \n 1 gen_num이 일반 함수라면 그 안에 있는 모든 내용이 실행되나, 이 .. 더보기
[윤성우의 열혈 파이썬 중급편] 08. 두 함수를 대신하는 리스트 컴프리헨션 출처 : 윤성우의 열혈 파이썬 : 중급 08. 두 함수를 대신하는 리스트 컴프리헨션 map과 filter를 대신하는 리스트 컴프리헨션 st1 = [1, 2, 3] st2 = list(map(lambda n: n**2, st1)) st2 = [n**2 for n in st1] st = [1, 2, 3, 4, 5] ost = list(filter(lambda n: n % 2, st)) ost = [n for n in st if n % 2] st = list(range(1, 11)) fst = list(map(lambda n: n**2, filter(lambda n: n % 2, st))) fst = [n**2 for n in st if n % 2] map에 filter까지 더해지는 상황에서는 확실히 리스트 .. 더보기
[윤성우의 열혈 파이썬 중급편] 07. map & filter 출처 : 윤성우의 열혈 파이썬 : 중급 07. map & filter map def pow(n) return n ** 2 st1 = [1, 2, 3] st2 = [pow(st1[0]), pow(st1[1]), pow(st1h[2])] print(st2) # [1, 4, 9] st1 = [1, 2, 3] st2 = list(map(pow, st1)) print(st2) # [1, 4, 9] map 함수는 st1에 저장된 값들을 하나씩 전달하면서 pow 함수를 호출해준다 이 때 map의 두 번째 전달 대상은 iterable 객체여야 한다 map은 iterator 객체 하나를 반환한다 def pow(n) return n ** 2 st = [1, 2, 3] ir = map(pow, st) for i in ir:.. 더보기
[윤성우의 열혈 파이썬 중급편] 06. 객체처럼 다뤄지는 함수 그리고 람다 출처 : 윤성우의 열혈 파이썬 : 중급 06. 객체처럼 다뤄지는 함수 그리고 람다 파이썬에서는 함수도 객체 def func1(n): return n def func2(): print("hello") type(func1) # type(func2) # def say1(): print('hello') def say2(): print('hi-') def caller(fct): fct() caller(say1) # 매개변수에 함수를 전달 caller(say2) def fct_fac(n): def exp(x): return x ** n return exp f2 = fct_fac(2) f3 = fct_fac(3) f2(4) # 16 f3(4) # 64 함수를 정의하면 파이썬은 그 함수의 .. 더보기
[윤성우의 열혈 파이썬 중급편] 05. Iterable 객체와 Iterator 객체 출처 : 윤성우의 열혈 파이썬 : 중급 05. Iterable 객체와 Iterator 객체 iter 함수 ds = [1, 2, 3, 4] for i in ds: print(i, end = ' ') ir = iter(ds) next(ir) # 1 next(ir) # 2 next(ir) # 3 next(ir) # 4 next(ir) # StopIteration error iter 함수는 리스트에서 값을 꺼내는 기능을 제공하는 객체를 생성해서 반환 꺼내는 방법과 꺼낸 값을 처리하는 방법에 있어서도 유연성이 생긴다 Iterable 객체와 Iterator 객체의 구분 iterable 객체를 대상으로 iter 함수를 호출해서 iterator 객체를 만든다 iterator 객체를 생성할 수 있는 대상이.. 더보기
[윤성우의 열혈 파이썬 중급편] 04. list comprehension 출처 : 윤성우의 열혈 파이썬 : 중급 04. list comprehension list comprehension r1 = [1, 2, 3, 4, 5] r2 = [] for i in r1: r2.append(i*2) r2 = [x*2 for x in r1] 조건 필터 추가하기 r1 = [1, 2, 3, 4, 5] r2 = [] for i in r1: if i % 2: r2.append(i*2) r2 = [x*2 for x in r1 if x % 2] 더보기
[윤성우의 열혈 파이썬 중급편] 03. 깊은 복사와 얕은 복사 출처 : 윤성우의 열혈 파이썬 : 중급 03. 깊은 복사와 얕은 복사 v1 == v2 : 두 변수가 참조하는 객체의 내용이 같은가? v1 is v2 : 두 변수가 참조하는 객체는 동일 객체인가? r1 = [1, 2, 3] r2 = [1, 2, 3] r1 is r2 # False r1 == r2 # True r1 = [1, 2, 3] r2 = r1 r1 is r2 # True r1 = ['John', ('man', 'USA'), [175, 23]] r2 = list(r1) r1 is r2 # False r1[0] is r2[0] # T r1[1] is r2[1] # T r1[2] is r2[2] # T 리스트는 각 값들을 (객체) 리스트 내에서 참조하는 형태이다 .. 더보기